导航

Java- wait/notify

Posted on 2017-07-05 11:46  Young哥哥  阅读(66)  评论(0)    收藏  举报

小知识:

wait() :调用该方法的线程进入WATTING状态,只有等待另外线程的通知或中断才会返回,调用wait()方法后,会释放对象的锁。

 

notify() :通知一个在对象上等待的线程,使其从wait()方法返回,而返回的前提是该线程获取到了对象的锁。

 

下面demo重点解释这2个方法使用

 

举例:店里有一个厨师,一个服务员,为避免厨师每做好一份,服务员端出去一份,效率太低且浪费体力。现假设厨师每做好10份,服务员就用一个大木盘子端给客户,每天卖够100份就打烊收工,厨师服务员各自回家休息。

 

如果不用线程锁等待通知机制是:服务员隔一段时间去厨房看看,满10份就用盘子端出去。这样浪费资源。如果厨师每做够10份,就喊一声“饺子好了,可以端走啦”。服务员收到通知,就去厨房将饺子端给客人;厨师还没做够,即还没收到厨师的通知,就可以稍微休息下,下面demo就是这样实现

 

1、用obj对象共享,用syn控制对象释放

 

2、服务员等待obj释放(notify方法控制),来进行run方法运行