我想在队列上有一些线程,所以我可以从那里管理它们。这可能吗?我有一些代码,但它不能正常工作。线程对象的队列
主要想法是生成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()之后调用它)。
没有什么根本上的错误使用这种方法。如果它不起作用,那么代码中可能存在一个错误。你能不能在这里发布代码,以便我们可以查看它并提供有用的反馈? – templatetypedef
你为什么不使用java的executor框架:http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ExecutorService.html http://docs.oracle.com/javase /tutorial/essential/concurrency/exinter.html –
@templatetypedef我编辑并添加了一些代码。我不知道我是否正确地做... – Harold