JAVA——如何停止线程呢?(interrupt)
2016-04-27 21:29
543 查看
stop方法已经过时;那么如何停止线程?
只有一种,run方法结束。开启多线程运行,运行代码通常是循环结构。
只要控制住循环,就可以让run方法结束,也就是线程结束。
特殊情况:
当线程处于了冻结状态。就不会读取到标记。那么线程就不会结束。
当没有指定的方式让冻结的线程恢复到运行状态时,这时需要对冻结进行清除。强制让线程恢复到运行状态中来。这样就可以操作标记让线程结束。
Thread类提供了该方法 interrupt();
![](https://img-blog.csdn.net/20160427212740716)
参考实例:
只有一种,run方法结束。开启多线程运行,运行代码通常是循环结构。
只要控制住循环,就可以让run方法结束,也就是线程结束。
特殊情况:
当线程处于了冻结状态。就不会读取到标记。那么线程就不会结束。
当没有指定的方式让冻结的线程恢复到运行状态时,这时需要对冻结进行清除。强制让线程恢复到运行状态中来。这样就可以操作标记让线程结束。
Thread类提供了该方法 interrupt();
参考实例:
class StopThread implements Runnable { private boolean flag = true; public synchronized void run() { while(flag) { try { wait(); } catch(InterruptedException e) { System.out.println(Thread.currentThread().getName()+"....Exception"); flag = false; } System.out.println(Thread.currentThread().getName()+"....run"); } } public void changeFlag() { flag = false; } }
class StopThreadDemo { public static void main(String[] args) { StopThread st = new StopThread(); Thread t1 = new Thread(st); Thread t2 = new Thread(st); t1.start(); t2.start(); int num = 0; while(true) { if(num++==10) { //st.changeFlag(); t1.interrupt(); t2.interrupt(); break; } System.out.println(Thread.currentThread().getName()+"....main"+num); } } }
相关文章推荐
- 重新学javaweb---JSTL标签
- [Java工具]Java常用在线工具集合.
- 怎样在struts2的Action中获取request、response、session对象。
- java毕向东听课笔记27(集合框架-Map)
- Java HashSet和HashMap源码剖析
- java精度运算——BigDecimal
- Java的一些简单示例(1)
- SpringMVC系列之URL匹配问题
- java_web 第三课servlet使用jdbc连接数据库
- spring+quartz实例
- Eclipse学习笔记之GrepCode插件
- Java iText使用PDF模板生成PDF文档
- Java url 中文参数乱码
- Java编程基础知识复习:变量与数据类型<数据类型初阶>
- JAVA REVIEW_JVM类的加载、连接、初始化
- 依赖注入在JAVA中的使用
- 一句话概括java的设计模式
- spring boot 基础日志配置
- java中定时器的使用
- Java基础笔记01