public class ProducerConsumer
{
public static void main(String[] args)
{
Container container = new Container();
Producer producer = new Producer(container);
Consumer consumer = new Consumer(container);
Thread producerThread = new Thread(producer);
Thread consumerThread = new Thread(consumer);
producerThread.start();
consumerThread.start();
}
}
// 生产者
class Producer implements Runnable
{
private Container container = null;
public Producer(Container container)
{
this.container = container;
}
public void run()
{
for(int i = 0; i < 20; i++)
{
Bread bread = new Bread(i);
container.push(bread);
System.out.println("生产面包: " + bread);
}
}
}
// 消费者
class Consumer implements Runnable
{
private Container container = null;
public Consumer(Container container)
{
this.container = container;
}
public void run()
{
for(int i = 0; i < 20; i++)
{
Bread bread = container.pop();
System.out.println("消费面包: " + bread);
}
}
}
// 容器类
class Container
{
int ind = 0;
Bread[] breads = new Bread[10];
public synchronized void push(Bread bread)
{
while (ind == breads.length)
{
try
{
this.wait();
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
this.notify();
breads[ind++] = bread;
}
public synchronized Bread pop()
{
while(ind == 0)
{
try
{
this.wait();
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
this.notify();
return breads[--ind];
}
}
// 面包类
class Bread
{
int id;
public Bread(int id)
{
this.id = id;
}
@Override
public String toString()
{
return "Bread : " + id;
}
}
生产者-消费者的java实现
最新推荐文章于 2023-04-26 09:27:27 发布