码迷,mamicode.com
首页 > 其他好文 > 详细

等待、集合和通知

时间:2014-06-25 15:44:18      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:style   color   strong   os   时间   new   

等待

等待操作在调用wait()或时间形式wait(long millisecs)和wait(long millisecs,int nanosecs)之后发生。具有参数0的wait(long millisecs)调用或具有两个0参数wait(long millisecs,int nanosecs)的调用等同于wait()的调用。

如果线程没有在抛出中断异常InterruptedException的情况返回,那么线程从wait()正常返回。

通知

通知操作在调用notify()或notifyAll()调用后发生。令线程t是执行对象m上的方法的任一线程,并令n是线程t在对象m上加锁操作的数量,同时n没有被解锁操作匹配,会有以下情形发生:

  • if n == 0 ,则抛出IllegalMonitorStateException。情景是:线程t已没有占有目标对象m的锁;
  • if n >   0 ,并且这是一个notify()操作,那么如果对象m的等待集合不是空的,则是对象m当前等待集合中的一个成员线程u被选择,并从等待集合中删除,让线程u在等待操作中得以继续。注意,直到t完全解锁对象m监视器之后,u的加锁操作才能成功;
  • if n >   0 ,并且这是一个notifyAll()操作,那么所有等待线程人等待集合中删除。

中断

中断操作在调用方法Thread.interrupt()或new ThreadGroup().interrupt()之后发生。

等待、通知、中断的交互

 

等待、集合和通知,布布扣,bubuko.com

等待、集合和通知

标签:style   color   strong   os   时间   new   

原文地址:http://www.cnblogs.com/wx491592452/p/3806296.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!