Thread(线程间通讯,等待唤醒机制)
来源:互联网 发布:陶瓷进销存软件客服 编辑:程序博客网 时间:2024/05/12 02:13
</pre><pre name="code" class="java">package process;/* * 线程间通讯: * 其实就是多个线程在操作同一个资源 * 但是操作的动作不同。 * * wait: * notify() * notifyAll() * * 都使用在同步中,因为要对持有监视器(锁)的线程操作 * 所以要使用在同步中,因为只有同步才具有锁 * * 为什么这些操作线程的方法要定义object类中呢? * 因为这些方法在操作同步中线程时,都必须要表示他们所操作线程只有的锁。 * 只有同一个锁上的被等待线程,可以被同一个notify唤醒 * 不可以对不同锁中的线程进行唤醒 * * 也就是说,等待和唤醒必须是同一个锁 * * 而锁可以是任意对象,所以可以被任意对象调用的方法定义object类中。 */class Res{String name;String sex;boolean flag = false;}class Input implements Runnable{private Res s;Input(Res s){this.s = s;}public void run(){int x = 0;while(true){synchronized(s){if(s.flag)try {s.wait();} catch (Exception e) {}if(x == 0){s.name = "mike";s.sex = "nan";}else{s.name="丽丽";s.sex = "女";}x = (x+1)%2;s.flag = true;s.notify();}}}}class Output implements Runnable{private Res s;Output(Res s){this.s = s;}public void run(){while(true){synchronized(s){if(!s.flag)try {s.wait();} catch (Exception e) {}System.out.println(s.name+"...."+s.sex);s.flag = false;s.notify();}}}} public class InputOutputDemo {public static void main(String[] args){Res s = new Res();Input i = new Input(s);Output o = new Output(s);Thread t = new Thread(i);Thread t1 = new Thread(o);t.start();t1.start();}}
0 0
- Thread(线程间通讯,等待唤醒机制)
- 线程间通讯和等待唤醒机制
- 线程间通讯-------等待唤醒机制
- 线程间通讯------等待唤醒机制(代码优化)
- Java笔记 - 线程间通讯- 等待唤醒机制
- Java笔记 - 线程间通讯 - 等待唤醒机制2
- 线程间的通讯,等待与唤醒
- 线程等待唤醒机制
- 多线程通讯-等待唤醒机制
- JavaSE 多线程 线程间通讯—等待唤醒机制代码优化(背下来)
- Java线程间通信-等待唤醒机制
- 线程间通信--等待唤醒机制
- 线程间的通信------------等待唤醒机制
- 线程间通信之等待唤醒机制
- 线程间通信之等待唤醒机制
- 多线程间的通讯之等待唤醒机制
- 线程的等待唤醒机制
- 黑马程序员----Thread等待唤醒机制
- 算法导论第三版详细答案
- Box2dWeb.js创世,造物,连接器初体验
- 级联菜单和tab页的 jquery实现--第一步第二部
- UGUI与NGUI优缺点对比
- 关于profile使用简介
- Thread(线程间通讯,等待唤醒机制)
- Binary String Matching
- string 类的实现
- 先序和中序建立二叉树
- jQuery.form.js进行表单提交,中文乱码问题及解决
- Qt4.8单实例启动的一种方法
- 项目软件编程下载地址
- Eliminate the application levels, a new concept on equipment/automation/Logistic control software 消除
- appium1.3.7的坑-Original error: Could not initialize ideviceinstaller; make sure it is installed ...