notify();wait();notifyALL();

原创 2013年12月02日 19:24:39

class Res
{
 String name;
 String sex;
 boolean flag = false;

}

class Input implements Runnable
{
 private Res r;

 Input(Res r)
 {
  this.r = r;
 }
 public void run()
 { 
  int x = 0;
  while(true)
  {
   
   synchronized (r)
   {
    if(r.flag)
     try
     {
      r.wait();
     }
     catch (Exception e)
     {
     }
    if (x == 0)
    {
     r.name="mike";
     r.sex= "man";
    }
    else
    {
     r.name="丽丽";
     r.sex= "女女女";
    }
    x = (x+1)%2;
    r.flag = true;
    r.notify();
   }
  }
 }
}

class Output implements Runnable
{
 private Res r;

 Output(Res r)
 {
  this.r = r;
 }
 public void run()
 {
  while(true)
  {
   synchronized (r)
   {
    if(!r.flag)
     try
     {
      r.wait();
     }
     catch (Exception e)
     {
     }
    System.out.println(r.name+"..."+r.sex);
    r.flag = false;
    r.notify();
   }
   
  }
 }
}

class  InputOutputDemo
{
 public static void main(String[] args)
 {
  Res r = new Res();

  Input in = new Input(r);
  Output out = new Output(r);

  Thread t1 = new Thread(in);
  Thread t2 = new Thread(out);

  t1.start();
  t2.start();
 }
}


最简实例说明WAIT、NOTIFY、NOTIFYALL的使用方法

wait()、notify()、notifyAll()是三个定义在Object类里的方法,可以用来控制线程的状态。 这三个方法最终调用的都是jvm级的native方法。随着jvm运行平台的不同可...
  • jackmtlee
  • jackmtlee
  • 2016年04月06日 21:14
  • 594

【Java并发编程】之十:使用wait/notify/notifyAll实现线程间通信的几点重要说明

在Java中,可以通过配合调用Object对象的wait()方法和notify()方法或notifyAll()方法来实现线程间的通信。在线程中调用wait()方法,将阻塞等待其他线程的通知(其他线程调...
  • mmc_maodun
  • mmc_maodun
  • 2013年12月09日 22:09
  • 19400

Java并发编程系列之八:wait()、notify()和notifyAll()

代码一个线程修改一个对象的值,而另一个线程则感知到了变化,然后进行相应的操作,这就是wait()、notify()和notifyAll()方法的本质。具体体现到方法上则是这样的:一个线程A调用了对象o...
  • u011116672
  • u011116672
  • 2016年04月02日 18:47
  • 4034

线程间协作的两种方式:wait、notify、notifyAll和Condition

Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition   在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产...
  • htofly
  • htofly
  • 2016年06月19日 11:54
  • 1406

线程通信(wait()、notify()、notifyAll() 方法)

线程通信:程序不能控制线程的轮换执行, 但可以通过一些机制保证线程协调运行. 传统的线程通信 Object类提供了wait(), notify()和notifyAll()三个方法实现线程通信, 它...
  • zlz18225318697
  • zlz18225318697
  • 2016年09月21日 14:01
  • 585

同步机制中notify()与wait()--实现A,B,C循环打印

关于同步与异步机制,听过很多通俗的解释。 日常生活中其实也有很多这样的例子,比如吃饭的时候 同步:就是你通知我去吃饭,我听到了就和你一起去,如果我没有回应,你就会一直喊,直到我有反映了为止。 异...
  • qq_28051453
  • qq_28051453
  • 2016年07月22日 18:48
  • 578

java 为什么wait(),notify(),notifyAll()必须在同步方法/代码块中调用?

在Java中,所有对象都能够被作为"监视器monitor"——指一个拥有一个独占锁,一个入口队列和一个等待队列的实体entity。所有对象的非同步方法都能够在任意时刻被任意线程调用,此时不需要考虑加锁...
  • haluoluo211
  • haluoluo211
  • 2015年11月01日 15:59
  • 3697

为什么wait(),notify()和notifyAll()必须在同步块或同步方法中调

我们常用wait(),notify()和notifyAll()方法来进行线程间通信。线程检查一个条件后就行进入等待状态,例如,在“生产者-消费者”模型中,生产者线程发现缓冲区满了就等待,消费者线程通过...
  • honganboy
  • honganboy
  • 2015年07月25日 22:58
  • 1743

Java多线程研究03-线程的基本操作(notify,notifyAll,interrupt,join,sleep)

JAVA中的基本线程操作这是前面给出的线程状态切换图例,可能还不能完全理解其中的切换条件,我们将详细介绍JAVA中如何进行这些线程状态的操作。 本文将讲解notify、notifyAll、inter...
  • wfzczangpeng
  • wfzczangpeng
  • 2016年07月24日 17:35
  • 1140

Java多线程之~~~~使用wait和notify实现生产者消费者模型

在多线程开发中,最经典的一个模型就是生产者消费者模型,他们有一个缓冲区,缓冲区有最大限制,当缓冲区满 的时候,生产者是不能将产品放入到缓冲区里面的,当然,当缓冲区是空的时候,消费者也不能从中拿出来产...
  • a352193394
  • a352193394
  • 2014年09月18日 23:28
  • 7193
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:notify();wait();notifyALL();
举报原因:
原因补充:

(最多只允许输入30个字)