等待唤醒机制

来源:互联网 发布:泰国电影 知乎 编辑:程序博客网 时间:2024/05/17 00:49

   Java多线程中等待唤醒机制.

   wait,notify,notifyAll.三个方法都是对持有锁的线程操作,所以使用在同步过程中.

   为什么这些方法定义在Object类中呢?让一个线程等待和唤醒一个线程,必须使用的是同一把锁.不可以对不同锁的线程进行唤醒.而锁可以是任意对象,可以被任意对象调用的方法定义在Object类中.

  

package com.neutron.thread.wait_notify;/** * 线程通信中共享信息类 * @author zhanght * */public class Resource {private String name;private int age;private boolean flag = false;public synchronized void setResource(String name, int age) {if(this.flag) {try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}this.name = name;this.age = age;flag = true;this.notify();}public synchronized void getResource() {if (!this.flag) {try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("name:" + this.name + ", age:" + age);flag = false;this.notify();}public static void main(String[] args){Resource res = new Resource();new Thread(new Input(res)).start();new Thread(new Output(res)).start();}}
    
package com.neutron.thread.wait_notify;/** * 数据输入 * @author zhanght * */public class Input implements Runnable {private Resource res;public Input(Resource res) {this.res = res;}@Overridepublic void run() {int x = 0;while(true) {if (x == 0) {res.setResource("sky", 11);} else {res.setResource("sea", 21);}x = (x + 1) % 2;}}}
package com.neutron.thread.wait_notify;public class Output implements Runnable {private Resource res;public Output(Resource res) {this.res = res;}@Overridepublic void run() {while(true) {res.getResource();}}}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 母猫把小猫丢了怎么办 小狗不吃东西没精神怎么办 小狗的鼻子烂了怎么办 狗老是在家拉尿怎么办 狗狗鼻子有点干怎么办 狗的鼻头不黑了怎么办 金毛鼻头不黑怎么办 金毛毛掉了不长怎么办 狗狗鼻子烂了怎么办 小比熊鼻子不黑怎么办 狗狗鼻子起皮怎么办 金鱼身子弯了是怎么办 属狗的纹龙怎么办 卫生间的墙空的怎么办 花生苗长得好怎么办 菊花上面的白虫怎么办 小狗不吃东西还吐怎么办 小狗呕吐不吃东西没精神怎么办 小狗生病了不吃东西怎么办 小兔子腿摔了怎么办 刺猬葡萄我们骄傲我们该怎么办 小狗被邻居家大狗咬死了怎么办 狗狗死胎在腹中怎么办 小狗不吃饭没精神怎么办 虎皮鹦鹉生蛋了怎么办 钢笔替换芯干了怎么办 水芯钢笔不出水怎么办 被红斑蛇咬了怎么办 狗生完小狗不爰吃饭怎么办 比熊见了狗就叫怎么办 小狗到新主人家里吐怎么办 床上有小绿叶蝉怎么办 腰椎间盘轻微突出怎么办 养的小白兔死了怎么办 小鸡嘴边起很大的疙瘩怎么办 兔子下牙齿断了怎么办 刚种的花蔫了怎么办 鲜切花花朵蔫了怎么办 兔子扭伤脚肿了怎么办 兔子的耳朵肿了怎么办 家里养兔子大了怎么办