终结任务

简介: 终结任务

线程状态


  • 新建(new):当线程被创建时,线程会短暂地处于这种状态。此时,线程已经被分配了必需的系统资源并执行了初始化。此刻线程已有资格获得CPU时间,之后调度器将把这个线程转变为可运行或阻塞状态
  • 就绪(Runnable):在此状态下,只要调度器将时间片分配给线程,线程就可以运行。在任意时刻,线程可运行也可不运行.
  • 阻塞(Blocked):线程能够运行,但某个条件阻碍了运行。当线程处此状态时,调度器将忽略该线程,不会分配给其任何的CPU时间。直到重入就绪态,才有可能执行操作
  • 死亡(Dead):处于死亡或终止态的线程将不再是可调度的,并且再也不会再得到CPU时间片,它的任务已结束,不再可运行。任务死亡的通常方式是从run()返回.

进入阻塞状态

可能原因:

  • 调用sleep()使任务进入休眠。此时,线程在指定时间内不会运行
  • 调用了wait()使线程挂起。直到线程得到notify()或notifyAll()消息(或者为JAVA5的juc包下的signal(),signalAll()消息),线程才会进入就绪态
  • 线程在等个某个输入/输出完成
  • 线程试图在某个对象上调用其同步方法,但此时对象锁被另一个线程持有不可用


suspen(),resume()因可能导致死锁被废止,stop()不释放获得的锁,亦被废止


对于处于阻塞状态的线程,必须强制这个线程跳出阻塞状态后,才可以让线程主动地终止

中断

Thread类包含interrupt(),可以用来终止一个被阻塞的线程,此方法将设置线程的中断状态.若此时线程正好处于休眠, 阻塞或者挂起,就会抛出InterruptedException异常,然后中断状态便会被清除

目录
相关文章
|
13天前
|
算法 Java
垃圾收集-判断对象的生死
垃圾收集-判断对象的生死
19 0
|
2月前
|
安全 IDE Java
终结空指针异常:Java开发者的生存指南
终结空指针异常:Java开发者的生存指南
60 1
|
3月前
|
Java 调度
多线程与并发编程【线程休眠、线程让步、线程联合、判断线程是否存活】(二)-全面详解(学习总结---从入门到深化)
多线程与并发编程【线程休眠、线程让步、线程联合、判断线程是否存活】(二)-全面详解(学习总结---从入门到深化)
29 1
|
9月前
|
C#
C# 探秘如何优雅的终止线程
C# 探秘如何优雅的终止线程
66 0
|
11月前
|
存储 Java
高并发编程-捕获线程运行时的异常 + 获取调用链
高并发编程-捕获线程运行时的异常 + 获取调用链
67 0
|
11月前
如何终止掉一个线程?
如何终止掉一个线程?
|
12月前
|
数据采集 C#
委托与线程在C#编程中的应用及选择
委托是一种表示对具有特定参数列表和返回类型的方法的引用的类型。可以使用委托将方法作为参数传递给其他方法,或者异步地调用方法。 线程是一个执行单元,它可以与进程中的其他线程并发运行。可以使用线程来同时执行多个任务,或者并行化计算密集型的工作。 委托和线程之间的区别在于,委托是一种引用方法的方式,而线程是一种执行方法的方式。可以使用委托在不同的线程上调用方法,要么使用委托的 BeginInvoke 和 EndInvoke 方法,要么使用 ThreadPool 或 Task 类。
线程终止与回收
线程终止与回收
115 0
|
数据采集 缓存 算法
库调多了,都忘了最基础的概念 《锁与线程 2 终结篇》
库调多了,都忘了最基础的概念 《锁与线程 2 终结篇》
106 0
库调多了,都忘了最基础的概念 《锁与线程 2 终结篇》
|
C++
年中终结
  简单总结:   7月2号,去年这个时候刚到北京,转眼一年一过,时间匆匆!   这一年发生很多事情,有生活有工作的,主要谈谈工作吧。   找工作还算顺利吧,7月2号到北京,找了一星期,7月11号就正式入职了。
1089 0