A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 楚风★憧憬 中级黑马   /  2014-7-21 23:27  /  804 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

等待:wait()方法让线程处于冻结状态,但不放线程执行资格。
唤醒:notify()方法唤醒一个线程,notifyAll()方法唤醒所有的线程,将线程池中等待的线程唤醒,通常唤醒第一个,而线程池中都存放着等待的线程。

线程间的通讯案例

class Resource
{
private String name;
private int count=1;
private boolean flag;

public synchronized void set(String name)
{
while(flag)
{
{

this.name=name+"::"+count++;
System.out.println(Thread.currentThread().getName()+"生产者"+name);
flag=true;
noyifyAll();

}

}

}
public synchronized void out()
{
while(!flag)
{
System.out.println(Thread.currentThread().getName()+"消费者"+name);
flag=flase;
notifyAll();
}

}
}

class Producer implements Runnable
{
private Resource r;

Producer(Resource r)
{
this.r=r;
}
public void run()
{

while(true)
{
r.set("商品");

}
}

}

class Consumer implements Runnable
{
private Resource r;

Consumer(Resource r)
{
this.r=r;
}

public void run()
{
while(true)
{
r.out();
}

}
}


class Demo
{
public static void main(String[] args)
{

Resource r= new Resource();

Producer pro= new Producer(r);

Comsumer con = new Consumer(r);

new Thread(pro).start();
new Thread(con).start();
new Thread(pro).start();

new Thread(con).start();
}
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马