代码如下,
package PandC;
import java.util.LinkedList;
import java.util.Random;
import java.util.function.Consumer;
/**
* @author
* @date 2019/11/15 10:07
*/
public class TestThread {
public static void main(String[] args) {
LinkedList<String> content=new LinkedList<>();
Consumer1 consumer1=new Consumer1("x1",content);
Consumer1 consumer2=new Consumer1("x2",content);
Product1 product1=new Product1(content,"p1");
Product1 product2=new Product1(content,"p2");
consumer1.start();
consumer2.start();
product1.start();
product2.start();
}
// static class xiaofei extends Thread{
// private Consume consume;
//
// public xiaofei(Consume consume) {
// this.consume = consume;
// }
// public void run(){
// while(true){
//
static class Consumer1 extends Thread{
private LinkedList<String> linkedList;
String name;
public Consumer1(String name, LinkedList<String> linkedList) {
super(name);
this.name=name;
this.linkedList=linkedList;
}
public void run(){
while (true){
synchronized (linkedList){
while(linkedList.size()<=0){
try {
linkedList.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("消费者 "+name +" 消费了:"+linkedList.removeFirst()+",,产品剩余:"+linkedList.size());
// System.out.println(linkedList);
linkedList.notify();
}
}
}
}
static class Product1 extends Thread{
private LinkedList<String> linkedList;
String name;
public Product1(LinkedList<String> linkedList, String name) {
this.linkedList = linkedList;
this.name = name;
}
public void run(){
while(true){
synchronized (linkedList){
while(linkedList.size()>=10){
try {
linkedList.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Random random=new Random();
int i =random.nextInt(26)+65;
String x=(char)i+"";
linkedList.add(x);
System.out.println("生产者 "+name +" 生产了:"+x +",,产品剩余:"+linkedList.size());
//System.out.println(linkedList);
linkedList.notify();
}
}
}
}
}