class Semaphore {
private int count=100;
public Semaphore(int n) {
this.count = n;
}
public synchronized void acquire() {
while(count == 0) {
try {
wait();
} catch (InterruptedException e) {
//keep trying
}
}
count--;
}
public synchronized void release() {
count++;
notify(); //alert a thread that's blocking on this semaphore
}
}
目前我支持100个用户。如果请求来自jsp(客户端)并通过此类,则Thread(来自JSP的请求)wait
和notify
会自动生成吗?
答案 0 :(得分:6)
我强烈建议您使用标准库中的java.util.concurrent.Semaphore,而不是编写自定义Semaphore实现。只提到一个通常更好的理由的一个原因:notify
不提供任何FIFO保证(来自Object.notify()):
选择是任意的,由实施决定
答案 1 :(得分:1)