java线程停止interrupt

来源:互联网 发布:初中学历可以学编程吗 编辑:程序博客网 时间:2024/06/05 18:39

说明:

线程在运行过程中可能需要根据条件判断进行停止,从api上开是可以使用stop方法强制终止线程,但是官方不推荐这个方法,这个是作废过期的方法,因为如果强制让线程停止则有可能使一些清理性的工作得不到完成,同时对锁定的对象进行了“解锁”,有可能导致数据得不到同步处理,从而数据出现问题。


在java中其实可以使用多种方式去终止,比如:

1、使用退出标志,使线程正常退出,也就是说设置个变量,当满足变量的时候就完成,也就是相当于run方法完成后线程终止;

2、使用interrupt方法中断线程;


主要记录下interrupt方法停止线程,代码很简单,具体代码如下:

[html] view plain copy
 print?
  1. public class StopTest extends Thread {  
  2.   
  3.     public static void main(String[] args) {  
  4.         try {  
  5.             //开启线程  
  6.             StopTest thread = new StopTest();  
  7.             thread.start();  
  8.             Thread.sleep(100);  
  9.             //设置线程停止状态  
  10.             thread.interrupt();  
  11.             System.out.println("是否停止了,"+thread.isInterrupted());  
  12.         } catch (Exception e) {  
  13.             e.printStackTrace();  
  14.         }  
  15.   
  16.     }  
  17.   
  18.     @Override  
  19.     public void run() {  
  20.         // TODO Auto-generated method stub  
  21.         for (int i = 0; i < 100000; i++) {  
  22.             System.out.println("i=" + i);  
  23.             //根据线程状态来停止线程业务  
  24.             if (this.isInterrupted()) {  
  25.                 System.out.println("当前线程:" + this.getName() + "停止了!");  
  26.                 break;  
  27.             }  
  28.         }  
  29.         System.out.println("end!!!");  
  30.     }  
  31. }  

运行输出:

i=15313
i=15314
i=15315
是否停止了,true
当前线程:Thread-0停止了!
end!!!

以上代码通过判断线程状态interrupted()方法来停止线程,比起直接用stop来停止的话,好了许多!