package test;
class ShareData {
private char c;
private boolean isProduced = false; // 信号量
public synchronized void putShareChar(char c) {
// 通知消费者已经生产,可以消费
if (isProduced) { // 如果产品还未消费,则生产者等待
try {
wait(); // 生产者等待
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.c = c;
isProduced = true; // 标记已经生产
notify();
} // 同步方法
public synchronized char getShareChar1() {
if (!isProduced) { // 如果产品还未生产,则消费者等待
try {
wait(); // 消费者等待
} catch (InterruptedException e) {
e.printStackTrace();
}
}
isProduced = false; // 标记已经消费
notify(); // 通知需要生产
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余2页未读,立即下载