Java之多线程interrupt中断线程的三种方法
作者:网络转载 发布时间:[ 2017/4/20 11:09:51 ] 推荐标签:测试开发技术 Java 线程
方法一:
@Override
public void run(){
for(int i = 0; i < 100; i++){
System.out.println(this.getname()+":"+i);
try{
Thread.sleep(1000);
}catch(InterruptedException e){
System.out.println("异常结束!");
return; //在异常中直接返回,从而打断线程
}
}
}
方法二(Java推荐的方法):
//通过自定义一个FlagThread中断线程的方法,调用直接中断
public void FlagThread extends Thread{
//设置中断标志
private boolean isInterrupted = false;
//中断线程方法
public void stopCurrentThread(){
this.isInterrupted = true; //中断标志
super.interrupt(); //调用系统中断,发起异常
}
@Override
public void run(){
while(!isInterrupted){
try{
for(int i = 0; i < 100; i++){
System.out.println(this.getname()+":"+i);
Thread.sleep(1000);
}
}catch(InterruptedException e){
//中断抛出异常,通过标记方式结束线程
}
}
System.out.println("异常结束!");
}
}
方法三
正常方式中断线程,要求不能在循环中调用sleep()方法
关于IO读写的线程停止
理论上无法停止,只能中断IO流,抛出异常后再处理。好的建议是将大数据的 IO 读写操作放在循环中进行,这样可以在每次循环中都有线程停止的时机,这也将问题转化成了如何停止正在运行中的线程的问题了。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11