class Resources{
private int count = 0;
public synchronized void produce() {
if(count < 20) {
count++;
System.out.println(Thread.currentThread().getName() + ":開始生產第" + count + "個產品");
notify();
}else{
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public synchronized void consume() {
if(count > 0) {
System.out.println(Thread.currentThread().getName() + ":開始消費第"+ count + "個產品");
count--;
notify();
}else{
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class Producer extends Thread{
private Resources resource;
public Producer(Resources resource){
this.resource = resource;
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + ":開始生產...");
while(true){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
resource.produce();
}
}
}
class Consumer extends Thread{
private Resources resource;
public Consumer(Resources resource){
this.resource = resource;
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + ":開始消費...");
while (true) {
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
resource.consume();
}
}
}
public class pv_Test {
public static void main(String[] args) {
Resources resource = new Resources();
Producer p = new Producer(resource);
p.setName("生產者");
Consumer v = new Consumer(resource);
v.setName("消費者");
p.start();
v.start();
}
}
操作系統之生產者-消費者
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.