码迷,mamicode.com
首页 > 编程语言 > 详细

线程阻塞

时间:2015-10-22 16:56:39      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

所谓的阻塞,就是线程能够运行,但是某个条件阻止它的运行,当线程处于阻塞状态时,调度器将忽略线程,不会分配给线程任何CPU时间,直到线程重新进入就绪状态,它才有可能执行操作。

 

为什么任务会进入阻塞的状态,一般有以下几个原因:
1.通过调用sleep(milliseconds)使任务进入休眠状态,在这种情况下,任务在指定的时间内不会运行;
2.通过调用wait()使线程挂起,直到线程得到了notify()或notifyAll()消息(或者java SE5的java.util.concurrent类库中等价的signal()或signalAll()),线程才会进入就绪状态;

    在.NET中的实现诸如 lock(){monitor.wait()}; autoResetEvent.waitone() ;
3.任务在等到某个输入或输出完成;

   apm 异步模型编程中,xx.accept(),阻塞在那边等待异步IO的返回结果。

4.任务试图在某个对象上调用其同步控制方法,但是对象锁不可用,因为另一个任务已经获取这个锁;

线程阻塞

标签:

原文地址:http://www.cnblogs.com/wuMing-dj/p/4901280.html

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