sleep()和wait()区别

        sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非
        (a)醒来的线程具有更高的优先级。  
        (b)正在运行的线程因为其它原因而阻塞。
        wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。 当调用wait()后,线程会释放掉它所占有的锁标志,从而使线程所在对象中的其它synchronized数据可被别的线程使用。 

       最大本质的区别是:sleep()不释放同步锁,wait()释放同步锁。

       还有用法的上的不同是:sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起。 

猜你喜欢

转载自jxdiamond.iteye.com/blog/1186108