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()

最新文章

  1. 【计算几何】bzoj1043 [HAOI2008]下落的圆盘
  2. 八大常见内排序java实现
  3. [Android Pro] RecyclerView实现瀑布流效果(二)
  4. JavaScript 中的Object的使用详解笔记(一)
  5. Codeforces Round #273 (Div. 2)
  6. 常用的PL/SQL开发原则
  7. 《C语言程序设计现代方法》第4章 编程题
  8. Black Box《优先队列》
  9. Redis数据结构
  10. HDOJ 4248 A Famous Stone Collector DP
  11. JavaScript高级程序设计:第十三章
  12. android Android性能优化之如何避免Overdraw
  13. Python:使用Kivy将python程序打包为apk文件
  14. 从运维的角度分析使用阿里云数据库RDS的必要性--你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库
  15. appium如何切换Native和WebView
  16. it's a big trick
  17. Bootstrap在线引用css和js
  18. 构建基础的SpringMVC+Hibernate+SpringloC项目
  19. RLException: XXX is neither a launch file in package XXX nor is XXX a launch file name问题解决
  20. flutter 获取设备屏幕大小

热门文章

  1. Word:不显示图片 + 清空“最近使用的文档”列表
  2. Mockito 2 关于打标(stubbing)
  3. TTTTTTTTTTTTTT hdu 5763 Another Meaning 哈希+dp
  4. 微信小程序搭建mpvue+vant+flyio
  5. jQuery文档操作之删除操作
  6. [BZOJ1123]:[POI2008]BLO(塔尖)
  7. zookeeper系列(三)zookeeper的使用--开源客户端
  8. NetScaler VPX configration
  9. React 番外篇
  10. Java-内存模型 final 和 volatile 的内存语义