import java.util.Random;
import java.util.concurrent.LinkedBlockingQueue;
public class ProducterTask implements Runnable {
LinkedBlockingQueue<AJ11> queue;
public ProducterTask(LinkedBlockingQueue<AJ11> queue) {
this.queue = queue;
}
@Override
public void run() {
while (true) {
synchronized (queue) {
while (queue.size() > 10) {
try {
queue.notifyAll();
queue.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Random r = new Random();
AJ11 aj11 = new AJ11("aj11", r.nextInt(10) + 38.0);
queue.add(aj11);
String name = Thread.currentThread().getName();
System.out.println(name + "生产了" + aj11.getName() + "尺码=" + aj11.getSize());
queue.notifyAll();
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
ThreadDemo
import java.util.concurrent.LinkedBlockingQueue;
public class ThreadDemo {
public static void main(String[] args) {
LinkedBlockingQueue<AJ11> queue = new LinkedBlockingQueue<AJ11>();
ProducterTask product = new ProducterTask(queue);
new Thread(product, "生产者1").start();
new Thread(product, "生产者2").start();
new Thread(product, "生产者3").start();
ConsumerTask consumer = new ConsumerTask(queue);
new Thread(consumer, "消费者1").start();
new Thread(consumer, "消费者2").start();
new Thread(consumer, "消费者3").start();
}
}