public class Producer implements Runnable {
private Queue<String> msg = new LinkedList<String>();
private int maxSize;
public Producer(Queue<String> msg, int maxSize){
this.msg = msg;
this.maxSize = maxSize;}
@Override
public void run(){
int i =0;while(true){
i++;
synchronized (msg){
while(msg.size()== maxSize){
try {
msg.wait();} catch (InterruptedException e){
e.printStackTrace();}}
try {
TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e){
e.printStackTrace();}
System.out.println("生产者生产消息:" + i);
msg.add("消息:"+ i);
msg.notify();}}}}
2、消费者
public class Consumer implements Runnable {
private Queue<String> msg = new LinkedList<String>();
private int maxSize;
public Consumer(Queue<String> msg, int maxSize){
this.msg = msg;
this.maxSize = maxSize;}
@Override
public void run(){while(true){
synchronized (msg){
while(msg.isEmpty()){
try {
msg.wait();} catch (InterruptedException e){
e.printStackTrace();}}
System.out.println("消息者消费消息:" + msg.remove());
msg.notify();}}}}
3、测试
public class Test01 {
public static void main(String[] args){
Queue<String> msg = new LinkedList<String>();
int maxSize =5;
Producer producer = new Producer(msg,maxSize);
Consumer consumer = new Consumer(msg,maxSize);
Thread thread1 = new Thread(producer);
Thread thread2 = new Thread(consumer);
thread1.start();
thread2.start();}}
1、生产者public class Producer implements Runnable { private Queue<String> msg = new LinkedList<String>(); private int maxSize; public Producer(Queue<String> msg, int maxSize) { this.msg = msg; this.maxSize = ma