如何解决在理解线程等待和通知时需要帮助
|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
?
解决方法
我强烈建议您使用标准库中的java.util.concurrent.Semaphore,而不是编写自定义Semaphore实现。仅提及为什么这通常是一个更好的主意的原因:“ 2”不给出任何FIFO保证(来自Object.notify()):
选择是任意的,并且由实现自行决定
, 您不必自己编写信号量。
看一下Semaphore的Java 6文档。
以及来自Thomas Darimont的本教程。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。