等待唤醒机制
来源:互联网 发布:泰国电影 知乎 编辑:程序博客网 时间: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
- java等待唤醒机制
- 多线程等待唤醒机制
- 【重点】等待唤醒机制
- 等待唤醒机制
- 等待唤醒机制
- Java 等待/唤醒机制
- 线程等待唤醒机制
- 等待唤醒机制
- 多线程-等待唤醒机制
- 等待唤醒机制
- 等待唤醒机制
- 多线程之等待唤醒机制
- 多线程的等待唤醒机制
- 黑马程序员--等待唤醒机制
- 线程的等待唤醒机制
- java多线程等待唤醒机制
- 多线程通讯-等待唤醒机制
- 等待唤醒机制_小记
- 微策略春招面试总结
- 【连载】关系型数据库是如何工作的?(3) - 归并排序
- 如何在magento中建立自定义页面
- magento如何建立静态页面page和静态区块
- Magento模块开发手册(四)Magento 布局、块 、模板
- 等待唤醒机制
- Magento 模块开发之模块重写
- 开贴记录
- 用magento布局给特定CMS页面添加静态块
- 欢迎使用CSDN-markdown编辑器
- java中没有无符号类型的循环办法
- win32编程中如何使用MFC类
- 打听别人工资的7个话题,让你薪水更高
- 文章标题