62,621
社区成员
发帖
与我相关
我的任务
分享package com.core.producer.cusotmer;
import java.util.Queue;
import java.util.Random;
public class Producer extends Thread {
private int MaxSize;
private Queue<Integer> queue;
public Producer(int maxSize, Queue<Integer> queue) {
MaxSize = maxSize;
this.queue = queue;
}
@Override
public void run() {
synchronized (queue) {
while (queue.size() < MaxSize) {
int value = new Random().nextInt();
System.out.println("生产者开始生产数据了:" + value);
queue.add(value);
}
queue.notifyAll();
try {
queue.wait();
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
}
}
package com.core.producer.cusotmer;
import java.util.Queue;
public class Customer extends Thread {
private int MaxSize;
private Queue<Integer> queue;
public Customer(int maxSize, Queue<Integer> queue) {
MaxSize = maxSize;
this.queue = queue;
}
@Override
public void run() {
synchronized (queue) {
while(queue!=null&&queue.size()>0){
System.out.println("--------消费者开始消费数据:"+queue.remove());
}
queue.notifyAll();
try {
queue.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
package com.core.producer.cusotmer;
import java.util.LinkedList;
import java.util.Queue;
public class Test {
public static void main(String[] args) throws InterruptedException {
int Max = 3;
Queue<Integer> queue = new LinkedList<>();
Producer producer = new Producer(Max, queue);
Customer customer = new Customer(Max, queue);
producer.start();
customer.start();
}
}

queue.notifyAll();
try {
queue.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
public class Producer extends Thread {
private int MaxSize;
private Queue<Integer> queue;
public Producer(int maxSize, Queue<Integer> queue) {
MaxSize = maxSize;
this.queue = queue;
}
@Override
public void run() {
synchronized (queue) {
while(true){
if(queue.size() = MaxSize) {
queue.wait();
}
int value = new Random().nextInt();
System.out.println("生产者开始生产数据了:" + value);
queue.add(value);
queue.notifyAll();
try {
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
}
}
}
改了producer, 体会一下