我试图在队列上有一些线程,以便我可以从那里管理它们。这可能吗?我有一些代码,但它不能正常工作。
主要思想是生成 X 个线程并将每个线程放入另一个类的队列中。然后在有队列的类中使用 wait() 和 notify() 方法来获得 FIFO 执行顺序。
提前致谢。
部分代码:
public synchronized void semWait(Thread petitionerThread){
count--;
if(count < 0){
try {
petitionerThread.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
FIFOQueue.add(petitionerThread);
}
}
public synchronized void semSignal(Thread noticeThread){
count++;
if(count <= 0)
if(!FIFOQueue.isEmpty())
FIFOQueue.pollLast().notify();
}
编辑:问题是当一个线程进入队列并等待它时,会发生一些事情,即永远不会为任何其他线程执行 semSignal 方法(它在 semWait() 之后调用)。