方法一:
@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反复编译的困扰方法,优化开发效率 改善代码质量,试试这十种方法- 周排行
- 月排行
- 评论排行
-   高效IT:如何利用零代码开发平台快速...
-   一体化好好的,为什么要前后端分离?
-   13种最佳App设计不止有设计美感,更跟...
-   12张图带你彻底理解分布式事务产生的...
-   2023 年 Java 发展趋势
-   Web3应和Web2一样用JavaScript构建
-   表明你的软件应该进行重大更新的11个迹象
-   一体化好好的,为什么要前后端分离?
-   高效IT:如何利用零代码开发平台快速...
-   2024年最具潜力的十大编程语言:引领...
-   Spring Boot是Java程序员的必备技能...
-   2018年最全的App设计资源(工具+模板...
-   智能可穿戴设备的主要测试步骤
-   13种最佳App设计不止有设计美感,更跟...
-   从软件出发,非功能测试思考总结
-   展望2017,谁是网络技术头牌?
-   C/C++单元测试工具Visual Unit 4 介绍
-   国内外最好用的6款Bug跟踪管理系统
-   性能测试指标评估必读
-   百度软件测试方案模板
-   38张史上最全的IT工程师技能图谱
-   C/C++单元测试工具Visual Unit 4 介绍
-   2019年,你会选哪些安全测试工具?
-   十款Web服务器性能压力测试工具
-   软件测试入门指南:周期、模型和文档化
-   记自动化测试成神学习之路
-   软件测试全景图 -最全的思维导图