java线程研究---(3)停止Thread
2015-08-07 13:52
375 查看
停止Thread
既然可以用start方法启动一个线程对象执行,那么就应该有对应的stop方法来终止(停止)线程对象的执行。
但是在JDK1.1之后,这个stop方法就取消了,因为会造成系统进入不稳定的状态。。。
(这里说的 终止,停止,是指线程停掉之后,永远都不能恢复执行了)
那么我们就自己设计一个方案,让线程对象停止执行:
一个线程对象的执行体是run方法
run方法里面的程序代码执行完后,那么就意味着这个线程停止了。
一个线程停止了,就进入了“dead”状态,没有任何方法让该线程对象进入其他状态了,永远不能恢复执行了(不能死而复生
)。
除非重新new一个新的线程对象。
所以我的方案是,想终止一个线程的执行,设计一个stop方法,提前让这个线程的run方法退出(return)
具体代码如下:
自定义的stop方法,在程序外部调用,调用之后,run方法内部,跳出循环体,即提前执行完毕。
线程状态图更新如下:
既然可以用start方法启动一个线程对象执行,那么就应该有对应的stop方法来终止(停止)线程对象的执行。
但是在JDK1.1之后,这个stop方法就取消了,因为会造成系统进入不稳定的状态。。。
(这里说的 终止,停止,是指线程停掉之后,永远都不能恢复执行了)
那么我们就自己设计一个方案,让线程对象停止执行:
一个线程对象的执行体是run方法
run方法里面的程序代码执行完后,那么就意味着这个线程停止了。
一个线程停止了,就进入了“dead”状态,没有任何方法让该线程对象进入其他状态了,永远不能恢复执行了(不能死而复生
)。
除非重新new一个新的线程对象。
所以我的方案是,想终止一个线程的执行,设计一个stop方法,提前让这个线程的run方法退出(return)
具体代码如下:
package thread; public class Hello4 implements Runnable { String name; boolean isStop; public Hello4(String n) { this.name = n; } @Override public void run() { int i = 0; while (!isStop) { System.out.println(name + " Hello " + i++); } } // 自定义的stop方法 public void stop() { isStop = true; } }
自定义的stop方法,在程序外部调用,调用之后,run方法内部,跳出循环体,即提前执行完毕。
线程状态图更新如下:
相关文章推荐
- Java 多线程编程两个简单的例子
- java代码--实心,空心图形
- spring mvc 配置 Mabatis 模板
- java代码--加密解密
- Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法
- java://Comparator、Comparable的用法(按照要求将map集合的键值对进行顺序输出)
- Spring中使用到的设计模式 - 工厂模式
- eclipse怎样快速的给代码段添加try catch
- Struts2自定义拦截器
- JAVA 阻塞队列实现 生产者和消费者 模式
- javafx spring
- JAVA中转义字符
- Java中Cloneable 和 clone()的总结和使用
- mac 下面破解MyEclipse 10的方法
- JAVA捕获异常与抛出异常
- Java集合框架中的核心接口、集合及映射实现类表
- JVM内存分配与回收
- Java 实现的断点下载
- Eclipse 中双击变量不高亮 解决办法
- Java窗体加载时组件不显示的解决方法