【发布时间】:2010-09-29 21:44:07
【问题描述】:
接下来是一个简单的信号量实现。
public class Semaphore {
private boolean signal = false;
public synchronized void take() {
this.signal = true;
this.notify();
}
public synchronized void release() throws InterruptedException {
while (!this.signal) wait();
this.signal = false;
}
}
真的吗,通过调用 take() 信号量模拟信号获取并唤醒随机选择的线程(如果它确实存在)并通过调用 release(),如果没有获取信号,信号量强制当前(触发)线程等待 notify() 但将信号采集设置为 false?
这是否意味着,如果我有 3 个线程的单个信号量,我将不得不为代码部分中的每个线程运行 take() - release() 对,这不是线程安全的?
【问题讨论】:
标签: java multithreading semaphore