第二十七篇:JAVA多线程机制之暂停、恢复和停止
来源:互联网 发布:hisuite mac版 编辑:程序博客网 时间:2024/06/05 08:44
在JDK1.2以前的版本如果要实现线程的暂停、恢复和停止的方法分别是suspend()、resume()、stop()。但是从JDK1.2以后这些方法已经被遗弃,因为它们有可能造成严重的系统错误和异常。
首先suspend()方法不会释放线程所占用的资源。如果使用该方法将某个线程挂起,则可能会使其他等待资源的线程死锁。而resume()方法本身并无问题,但是不能独立于suspend()方法存在。
其次调用stop()可能会导致严重的系统故障。因为该方法会使线程立刻中断指令执行,不管这段方法是否执行完毕。如果这个线程正在做重要的操作,对程序的运行起着支撑作用,这时如果突然中断其执行则会导致系统崩溃。
现在,这些方法已经不适合挂起和终止线程了,但是可以在run()方法中设置一些标志,通过在线程内部检测标志判断并调用wait()方法和notify()方法操作线程的挂起、恢复和正常终止。
下面通过示例来演示这些操作。
运行结果:
测试线程第1次运行…
测试线程第2次运行…
测试线程第3次运行…
测试线程第4次运行…
测试线程第5次运行…
测试线程第6次运行…
测试线程第7次运行…
测试线程第8次运行…
测试线程第9次运行…
测试线程第10次运行…
测试线程第11次运行…
测试线程第12次运行…
测试线程第13次运行…
测试线程第14次运行…
测试线程第15次运行…
测试线程第16次运行…
测试线程第17次运行…
测试线程第18次运行…
测试线程第19次运行…
测试线程第20次运行…
测试线程即将被挂起…
测试线程即将被唤醒…
测试线程第21次运行…
测试线程第22次运行…
测试线程第23次运行…
测试线程第24次运行…
测试线程第25次运行…
测试线程第26次运行…
测试线程第27次运行…
测试线程第28次运行…
测试线程第29次运行…
测试线程第30次运行…
终止测试线程…
测试线程第31次运行…
主线程终止…
- 第二十七篇:JAVA多线程机制之暂停、恢复和停止
- JAVA多线程机制之暂停、恢复和停止
- java线程停止、暂停和恢复等状态的控制
- java线程停止、暂停和恢复等状态的控制
- java多线程被废除的暂停和恢复
- java多线程---停止、暂停一个线程
- Java多线程编程-停止线程 暂停线程
- Java/Android倒计时(开始,暂停,恢复,停止)
- WPF控制动画开始、停止、暂停和恢复
- WPF控制动画开始、停止、暂停和恢复
- 第二十四篇:JAVA多线程机制之线程概念
- 第二十五篇:JAVA多线程机制之线程创建
- 第二十八篇:JAVA多线程机制之死锁
- MFC 多线程拷贝文件开始暂停停止和进度条
- winform+BackgroundWorker 多线程下如何停止和暂停
- (十七)java多线程之ThreadPoolExecutor
- Activity生命周期 之 暂停和恢复Activity
- Activity生命周期之暂停和恢复Activity
- Eclipse Servlet出错问题
- [Leetcode] 359. Logger Rate Limiter 解题报告
- 【Ubuntu-Tensorflow】GPU设置及显存资源分配
- 云服务器+域名+nodejs(小白建站)
- tablayout与侧滑展示
- 第二十七篇:JAVA多线程机制之暂停、恢复和停止
- 安装Python的第三方库
- final finally finalize的区别是什么
- 第二十八篇:JAVA多线程机制之死锁
- javax.servlet.http.HttpSession(HttpSession)出错
- MVC+EF+easyui数据更新问题
- leetcode 210. Course Schedule II
- Git基本操作和Github的使用
- 云服务器 ECS 数据恢复指南:Linux数据恢复