黑马程序员技术交流社区
标题:
多线程 生产者 消费者
[打印本页]
作者:
fmi110
时间:
2015-10-6 16:06
标题:
多线程 生产者 消费者
package demo;
public class ProducerAndConsuDemo {
/**
* 模拟生产者和消费者
*/
public static void main(String[] args) {
Resource r = new Resource();
for(int i = 1;i<4;i++){
new Thread(new Pro(r)).start();
new Thread(new Consu(r)).start();
}
}
}
class Resource{
private String name;
private int count = 0;
private boolean flag = false;
public void produce(){
synchronized(this){
while(flag){
try {
Thread.sleep(10);
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
count++;
System.out.println(Thread.currentThread().getName()+"...生产"+count);
flag = flag^true;
this.notifyAll();
}
}
public void sell(){
synchronized(this){
while(!flag){
try {
Thread.sleep(50);
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName()+"...消费"+count);
flag = flag^true;
this.notifyAll();
}
}
}
class Pro implements Runnable{
private Resource r;
public Pro(Resource r) {
super();
this.r = r;
}
@Override
public void run() {
while(true){
r.produce();
}
}
}
class Consu implements Runnable{
private Resource r;
public Consu(Resource r) {
super();
this.r = r;
}
@Override
public void run() {
while(true){
r.sell();
}
}
}
复制代码
作者:
fmi110
时间:
2015-10-6 16:11
Thread-0...生产1
Thread-5...消费1
Thread-4...生产2
Thread-3...消费2
Thread-2...生产3
Thread-1...消费3
Thread-2...生产4
Thread-3...消费4
Thread-4...生产5
Thread-5...消费5
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2