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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 金雀盆景生虫怎么办 租的房子墙脏怎么办 租住个厕所对着卧室怎么办 农村的房子没有房产证怎么办 墙面漆颜色深了怎么办 浴室门对卧室门怎么办 卧室40多个平方太大怎么办 卧室门洞太窄了怎么办 刷漆的墙面脏了怎么办 卧室颜色刷重了怎么办 感觉房子买小了怎么办 淋浴房一边是窗怎么办 1岁宝宝让狗咬了怎么办 2岁宝宝让狗咬了怎么办 带4个小孩只买两张儿童票怎么办 墙面补漆颜色有色差怎么办 墙壁刷的乳胶漆颜色不满意怎么办 门被水泡的鼓了怎么办 定制衣柜做大了怎么办 找平的地面高了怎么办 卫生间推拉门锁坏了怎么办 阳台推拉门框安装斜了怎么办? 电子门钥匙坏了怎么办 门的保险锁坏了怎么办 小区楼宇门坏了怎么办 门的锁坏了怎么办 汽车门把锁坏了怎么办 厨柜门上的板板掉了怎么办 衣柜门滑轮坏了怎么办 厨房推拉门推动时有声音是怎么办? 塑料推拉门声音大怎么办不好推 推拉门锁扣坏了怎么办 衣柜移门拉不动怎么办?如何保养 擦黑色桌面有层白灰怎么办 宝宝睡觉不盖被子怎么办 孩子盖被子就哭怎么办 一盖被子就发烧怎么办 两岁宝宝认被子盖怎么办 小孩吃多了发烧怎么办 两岁宝宝拉蛔虫怎么办 吃了长蛆的东西怎么办