标签:over throw span stat java多线程 jdk static rup public
@Deprecated public final void stop()
jdk源码中Thread的stop()方法已经被弃用了。那么怎么停止线程的呢?
thread.interrupt();这就是需要用到的方法
一般建议使用抛异常的方法来实现停止线程。因为在catch块里可对异常信息进行相关处理。
如下:
public class StopThread extends Thread{
/**
* 停止一个线程可用Thread.stop(),但这个方法是不安全的,被弃用的。别用
* 还可以用Thread.interrupt()
*/
@Override
public void run() {
/**
* 在沉睡中停止:如果线程在睡眠中被interrupt,将抛出异常java.lang.InterruptedException: sleep interrupted
*/
/*try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}*/
/**
* 使用“异常法”停止线程
*/
try {
for (int i=0;i<500000;i++){
if (this.isInterrupted()) {
System.out.println("停止状态");
throw new InterruptedException();
}
System.out.println("i=" + (i + 1));
}
System.out.println("===for end===");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
/**
* 测试线程是否是中断状态
* isInterrupted 不清除状态标志
* interrupted 清除状态标志
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
StopThread thread = new StopThread();
thread.start();
Thread.sleep(1000);
thread.interrupt();
// System.out.println("interrupted===================="+thread.interrupted());
// System.out.println("interrupted===================="+thread.interrupted());
// System.out.println("isInterrupted===================="+thread.isInterrupted());
// System.out.println("isInterrupted===================="+thread.isInterrupted());
}
}
标签:over throw span stat java多线程 jdk static rup public
原文地址:https://www.cnblogs.com/tangquanbin/p/9757560.html