阻塞

原创 2015年11月21日 14:41:56

终结任务

  1. 在阻塞时终结
     

      sleep()可以让执行状态变为被阻塞状态,而有时你必须终止被阻塞的任务。            
    线程状态:

一个线程可以处于四种状态之一:

1:新建(new):当线程被创建时,它只会短暂地处于这种状态。此时它已经分配了必需的系统资源,并执行了初始化。此刻线程已经有资格获得CPU时间了,之后调度器将把这个线程转变为可运行状态或阻塞状态。

2:就绪(Runnable):在这种状态下,只要调度器把时间片分配给线程,线程就可以运行。也就是说,在任意时刻,线程可以运行也可以不运行。只要调度器能分配时间片给线程,它就可以运行;这不同于死亡和阻塞状态。

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

4:死亡(Dead):处于死亡或终止状态的线程将不再是可调度的,并且再也不会得到CPU时间,他的任务已经结束,或不再是可运行的。任务死亡的通常方式是从run()方法返回,但是任务的线程还可以被中断。

进入阻塞状态:

一个任务进入阻塞状态,可能有如下的原因:

1.通过调用sleep(milliseconds)使任务进入休眠状态,在这种情况下,任务在指定的时间内不会运行。

2.你通过wait使线程挂起。直到线程得到了notify()或notifyAll()消息,线程才会进入就绪状态

3.任务在等待某个输入/输出完成。

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

4412_poll阻塞

  • 2017年05月03日 10:31
  • 4KB
  • 下载

php session读写锁引起的脚本阻塞问题

项目中经常会遇到session引起的脚本阻塞问题。比如一个需要操作session的页面接口长时间不响应,会导致其他操作session的页面也打不开。一直到接口响应或者超时才能操作其他。还有就是用ses...

线程阻塞优化

  • 2015年10月21日 11:06
  • 2.26MB
  • 下载

非阻塞tcpip通讯

  • 2012年12月11日 13:09
  • 767KB
  • 下载

verilog 中非阻塞赋值,for循环

非阻塞赋值的例子: reg c,b; always@(posedge clk) begin b c end

通信网理论的阻塞概率

  • 2012年06月13日 16:51
  • 1KB
  • 下载

打印机阻塞问题

  • 2012年05月18日 16:33
  • 276B
  • 下载

Java设计模式—生产者消费者模式(阻塞队列实现)

生产者消费者模式是并发、多线程编程中经典的设计模式,生产者和消费者通过分离的执行工作解耦,简化了开发模式,生产者和消费者可以以不同的速度生产和消费数据。这篇文章我们来看看什么是生产者消费者模式,这个问...
  • zljjava
  • zljjava
  • 2015年08月07日 15:01
  • 2850

查看阻塞和死锁

  • 2012年09月11日 15:24
  • 4KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:阻塞
举报原因:
原因补充:

(最多只允许输入30个字)