java 框架 身为一个程序员,如何优雅的结束一个线程?
浏览量:1346
时间:2021-04-12 06:10:54
作者:admin
身为一个程序员,如何优雅的结束一个线程?
谢谢你的邀请
!在回答之前,让我们先看看线程的几种状态以及状态切换的过程,如下图所示(我不想画,在线盗窃):
线程退出必须是初始化后的任何状态(不包括终止状态)退出。
线程在启动后独立运行。正常情况下,他们不能在启动后进行干预。他们只能等待跑步的结束。如果他们想干预,他们只能在共享内存区域中添加一个状态标识符。实际上,JDK已经有了一个内置的状态标识符,即中断标识符。它调用中断方法,但是处于等待状态的线程将抛出中断异常,并且它可以优化add状态变量。
总结起来,有三种方法:
1。等待线程完成自己的执行(这是最优雅的,但没有讨论的意义)。
2. 调用中断方法判断中断标识。但是,在等待状态下,会抛出异常,不能认为是优雅的。示例代码如下:
3。自己添加中断状态标志。示例代码如下:
摘要:
等待状态:在此状态下,exit只能调用中断方法。
阻塞状态:有两种类型:一种是可中断的,调用中断方法退出;另一种是不可中断的,只有运行后才能退出。
就绪状态:等待CPU调度,无干预。
运行状态:添加您自己的共享状态标识符。
最后的“优雅退出”代码如下:
如何优雅地停止Java进程?
在完成业务逻辑后,使用wait()方法或sleep()方法使线程进入阻塞状态
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。