方法一:
@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 读写操作放在循环中进行,这样可以在每次循环中都有线程停止的时机,这也将问题转化成了如何停止正在运行中的线程的问题了。
Java之多线程interrupt中断线程的三种方法
发表于:2017-08-08
作者:网络转载
来源:
 相关文章
前端到底是“技术深度”重要还是“技... 悟透一个小窍门,你就能举一反三掌握... 聊聊架构设计流程:设计备选方案 Java中的并发编程模型及其应对策略 掌握Java并发编程,避免无处不在的竞态条件 2024年,五个Java开发者应该关注的编程趋势- 周排行
- 月排行
-   一些Java的知识点扫盲
-   理解微服务的定义,概念以及微服务的原理
-   这款编译器能让Python和C++一样快:最...
-   风头不减的低代码会取代传统软件开发...
-   性能优化:量变引起质变的挑战
-   开发人员必须知道的免费服务与资源
-   JavaScript MV*框架最值得关注的七个亮点
-   八个开源微信小程序实战项目,yyds!
-   前端开发中不可忽视的知识点汇总(二)
-   六个神级PyCharm高效插件,编程如虎添翼
-   实时输出源代码!墙裂推荐这个场景化...
-   这款编译器能让Python和C++一样快:最...
-   软件开发中的十个认知偏差
-   每月处理15亿次登录,Auth0高可用架构实践
