java多线程之线程状态(2)
来源:互联网 发布:足彩数据分析下载 编辑:程序博客网 时间:2024/05/17 09:18
转载请注明出处
http://blog.csdn.net/pony_maggie/article/details/43206445
作者:小马
来看suspend和resume机制造成的阻塞现象。需要明确一点,suspend和resume在jdk1.6以后就不推荐使用了。这里只为了说明原理。
Blockable和Peeker依然是通用测试类,新增了两个类,分别为SuspendResume1和SuspendResume2。与上一篇类似,两个类的唯一区别在于run函数:
class SuspendResume1 extends SuspendResume{public SuspendResume1(Container c) {super(c);}public synchronized void run(){while(true){i++;update();suspend();}}}class SuspendResume2 extends SuspendResume{public SuspendResume2(Container c){super(c);}public void run(){while(true){change();suspend();}}public synchronized void change(){i++;update();}}
这里不多说了,运行的效果如下:
SuspendResume2中的value才会和文本框里的计数器同步。
两个类通过suspend来让自己阻塞,从而其它线程才有机会执行,不过这里有些区别,不像sleep在睡眠一定时间会自动唤醒,suspend的线程必须要resume才能唤醒,这就是Resumer类的作用,它也是一个线程,每隔1s就让SuspendResume实例唤醒自己。
class Resumer extends Thread{private SuspendResume sr;public Resumer(SuspendResume sr){this.sr = sr;start();}public void run(){while(true){try {sleep(1000);} catch (InterruptedException e) {// TODO: handle exceptionSystem.err.println("Interrupted");}sr.resume();}}}
0 0
- java多线程之线程状态(2)
- java多线程之线程状态
- Java多线程之线程状态
- java多线程之线程状态
- java多线程之线程状态(3)
- java 多线程之线程的状态
- Java多线程之线程状态转换
- (14)Java多线程之线程状态
- java多线程之线程运行状态
- Java多线程之线程状态案例
- 二.java多线程之线程状态转换
- Java多线程:线程状态
- java多线程-线程状态
- Java多线程:线程状态
- Java多线程:线程状态
- Java多线程:线程状态
- Java多线程:线程状态
- Java多线程:线程状态
- 【mfc】VC6中正确继续上次项目的做法
- jQuery工作原理解析以及源代码示例
- bbb sdk6编译流程
- 2015年1月27日
- 如何查找可用的google,dropbox等可用IP用于替换hosts
- java多线程之线程状态(2)
- unp卷一 第一章~第六章
- ORACLE 11g RMAN备份恢复--catalog
- BZOJ 3197 Sdoi2013 assassin 动态规划+树同构+费用流
- poj 1990 MooFest
- 关于mac中不能编译终端xcrun: error: active developer path
- 数据库完整性及约束
- Protocol Buffers Language Guide之proto文件类型格式分析
- UI多线程、开辟方式及线程安全