📄 basket.java
字号:
/*
* Basket.java
*
* Created on 2007年9月14日, 上午10:44
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package product_consumer;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
*
* @author Administrator
*/
public class Basket {
Lock lock = new ReentrantLock();
//产生Condition对象
Condition produced = lock.newCondition();
Condition consumed = lock.newCondition();
boolean available = false;
public void produce() throws InterruptedException {
lock.lock();
try {
if(available){
consumed.await(); //放弃lock进入睡眠
}
/*生产苹果*/
System.out.println("Apple produced.");
available = true;
produced.signal(); //发信号唤醒等待这个Condition的线程
} finally {
lock.unlock();
}
}
public void consume() throws InterruptedException {
lock.lock();
try {
if(!available){
produced.await();//放弃lock进入睡眠
}
/*吃苹果*/
System.out.println("Apple consumed.");
available = false;
consumed.signal();//发信号唤醒等待这个Condition的线程
} finally {
lock.unlock();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -