java安全停止线程
2024-09-04 09:19:29
Thread.stop()是一个被废弃的方法,不被推荐使用的原因是stop方法太过于暴力,强行把执行到一半的线程终止,并且会立即释放这个线程所有的锁。会破坏了线程中引用对象的一致性。
使用判断标志位的方法中断线程
interrupt() //线程中断 (标志位设置为true)
isInterrupted() //判断是否被中断
interrupted() //判断是否中断,并清除当前中断状态(标志位改为false)
public static class TestThread extends Thread{
public TestThread(String name){
super(name);
} @Override
public void run() {
String threadName=Thread.currentThread().getName();
while (!isInterrupted()){ //Runnable中用 Thread.currentThread().isInterruputed
System.out.println(threadName+" is run");
}
System.out.println(threadName+" flag is "+isInterrupted());
}
}
public static void main(String[] args) throws InterruptedException {
Thread testThread=new TestThread("test");
testThread.start();
Thread.sleep(2000);
testThread.interrupt();
}
当抛出 InterruptedException 异常,线程中断标志位会被复位 false, 线程不会正常中断 ,需要手动中断interrupt()
最新文章
- 【计算几何】bzoj1043 [HAOI2008]下落的圆盘
- 八大常见内排序java实现
- [Android Pro] RecyclerView实现瀑布流效果(二)
- JavaScript 中的Object的使用详解笔记(一)
- Codeforces Round #273 (Div. 2)
- 常用的PL/SQL开发原则
- 《C语言程序设计现代方法》第4章 编程题
- Black Box《优先队列》
- Redis数据结构
- HDOJ 4248 A Famous Stone Collector DP
- JavaScript高级程序设计:第十三章
- android Android性能优化之如何避免Overdraw
- Python:使用Kivy将python程序打包为apk文件
- 从运维的角度分析使用阿里云数据库RDS的必要性--你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库
- appium如何切换Native和WebView
- it's a big trick
- Bootstrap在线引用css和js
- 构建基础的SpringMVC+Hibernate+SpringloC项目
- RLException: XXX is neither a launch file in package XXX nor is XXX a launch file name问题解决
- flutter 获取设备屏幕大小
热门文章
- Word:不显示图片 + 清空“最近使用的文档”列表
- Mockito 2 关于打标(stubbing)
- TTTTTTTTTTTTTT hdu 5763 Another Meaning 哈希+dp
- 微信小程序搭建mpvue+vant+flyio
- jQuery文档操作之删除操作
- [BZOJ1123]:[POI2008]BLO(塔尖)
- zookeeper系列(三)zookeeper的使用--开源客户端
- NetScaler VPX configration
- React 番外篇
- Java-内存模型 final 和 volatile 的内存语义