Sleep()这个函数可以让线程睡眠一段时间,而后继续执行,参数是毫秒。
但是我们会发现,当毫秒数过小时,Sleep往往不能按照给定的时间睡眠,而是睡了长了一点的时间,这是由于Sleep函数的精度导致的,一般的系统默认的精度是10毫秒,也就是说,如果参数小于10,那么Sleep的时间可能是10,或者更多,系统尽量以10毫秒为精度保证时间准确,这对于高精度的程序来说明显不足,系统时钟clock()函数也存在类似问题。比如一个图形程序希望每秒帧数达到600,却不希望占用100%CPU,那么希望在主循环中适当加入Sleep(1),这种需求。
解决办法就是在程序初始化时执行timeBeginPeriod(1);来设置系统时钟精度。其中的1表示1毫秒,这样基本上可以精确到Sleep(1)的程度。
不过别忘了在程序销毁之前执行timeEndPeriod(1);以恢复系统时钟精度。
Thread.sleep()使当前线程的执行暂 停一段指定的时间,
Sleep 有两个重载的版本,一个以毫秒指定睡眠时间,另一个以纳秒指定睡眠时间,
但并不保证这些睡眠时间的精确性,因为他们受到系统计时器和调度程序精度和准确性的影响。
另外中断(interrupt)可以终止睡眠时间,
在任何情况下,都不能假设调用 sleep就会按照指定的时间精确的挂起线程。
http://mopishv0.blog.163.com/blog/static/544559322011017104255679/