java Thread方法解析: sleep join wait notify notifyAll

转载自:

sleep(),yield(),wait()区别详解:http://dylanxu.iteye.com/blog/1322066

join方法详解:http://www.open-open.com/lib/view/open1371741636171.html

java线程:http://blog.csdn.net/wsl211511/article/details/51090633

区别说明:

sleep(millSec) 方法:使方法所属线程暂停millSec毫秒(进入【阻塞态】),使得其它【就绪态】线程(低优先级的也有机会)有机会被执行,但是不会释放对象锁

yield()方法:使当前线程进入【就绪态】,让同优先级的线程具有被执行的机会,自己也有可能会被立即再次分配时间片。

a_thread.join()方法:使当前线程等待a_thread线程执行完成后再执行,当前线程进入【阻塞态】,不会释放锁本质上是循环调用wait方法,因此也会释放线程的monitor

obj.wait()方法:暂停方法所属线程并释放对象锁,同时使方法所属线程进入【等待池,直到obj的notify()或者notifyAll()方法被调用时,才有机会从【等待池】中被移到【锁标志等待池】中(只有锁标志等待池中线程能够获取锁标志),线程必须是拥有obj的monitor时才可以调用,否则会抛出异常。

obj.notify()方法:从【等待池中移走一个线程放入【锁标志等待池】中,线程必须是拥有obj的monitor时才可以调用,否则会抛出异常。

obj.notifyAll()方法:将【等待池】中的所有线程移到【锁标志等待池】中,线程必须是拥有obj的monitor时才可以调用,否则会抛出异常。

 

posted @ 2016-07-06 23:10  wrencai  阅读(531)  评论(0编辑  收藏  举报