Java:ProducerConsumer
我认为这段代码没有任何问题,但结果不会显示在eclipse的控制台窗口中 有什么问题吗Java:ProducerConsumer,java,multithreading,console,producer-consumer,Java,Multithreading,Console,Producer Consumer,我认为这段代码没有任何问题,但结果不会显示在eclipse的控制台窗口中 有什么问题吗 class Buffer{ private int data; private boolean empty = true; public synchronized int get() { while(empty) { try { wait(); } cat
class Buffer{
private int data;
private boolean empty = true;
public synchronized int get() {
while(empty) {
try {
wait();
} catch (InterruptedException e) {
}
}
empty = true;
notifyAll();
return data;
}
public synchronized void put(int data) {
while (!empty) {
try {
wait();
} catch (InterruptedException e) {
}
}
empty = false;
this.data = data;
notifyAll();
}
}
class Producer implements Runnable{
private Buffer buffer;
public Producer(Buffer buffer) {
this.buffer = buffer;
}
public void run() {
for (int i=0; i<0; i++) {
buffer.put(i);
System.out.println("Producer: " + i + "th cake produced.");
try {
Thread.sleep((int) (Math.random() * 100));
} catch (InterruptedException e) {
}
}
}
}
class Consumer implements Runnable{
private Buffer buffer;
public Consumer(Buffer drop) {
this.buffer = drop;
}
public void run() {
for(int i=0; i<10; i++) {
int data = buffer.get();
System.out.println("Consumer: " + data + "th cake comsumed.");
try {
Thread.sleep((int) (Math.random() * 100));
} catch (InterruptedException e) {
}
}
}
}
public class ProducerConsumerTest {
public static void main(String[] args) {
Buffer buffer = new Buffer();
(new Thread(new Producer(buffer))).start();
(new Thread(new Consumer(buffer))).start();
}
}
类缓冲区{
私有int数据;
私有布尔值为空=真;
公共同步int get(){
while(空){
试一试{
等待();
}捕捉(中断异常e){
}
}
空=真;
notifyAll();
返回数据;
}
公共同步的void put(int数据){
而(!空){
试一试{
等待();
}捕获(中断异常e){
}
}
空=假;
这个数据=数据;
notifyAll();
}
}
类生成器实现了Runnable{
专用缓冲区;
公共制作人(缓冲区){
this.buffer=缓冲区;
}
公开募捐{
对于(inti=0;i,在producer的run()方法中,有一个坏for循环
for (int i=0; i<0; i++)
for(int i=0;i
for (int i=0; i<10; i++)