在java中的多个线程中管理队列系统

时间:2014-04-26 12:24:43

标签: java queue message-queue

我有一个请求队列。有两个主题。在线程上我将项目添加到队列中,第二个线程基本上从队列列表中获取请求并执行它们。所以第二个线程等待第一个线程在列表中放入一些请求。我在一个while循环中这样做。我不认为这是最好的方法。它是CPU密集型的。每当我添加请求时,我都能想到一种通知第二个线程的方法。但是可能存在请求可能无法成功执行的问题,因此我必须再次询问第二个线程来执行请求。 你有什么方法可以认为会有效吗?

2 个答案:

答案 0 :(得分:1)

使用Java中的一个可用阻塞队列:http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html

确实不推荐忙碌的等待(除非你想用你的电脑加热)。

答案 1 :(得分:0)

您可以使用Semaphores来解决此问题。

第二个线程,即工作线程将等待信号量。每当第一个线程将新任务信息推送到Queue结构时,它也会发布到Semaphore,所以现在第二个线程可以安全地执行。

如果有多个读写器线程,这可能还需要一些同步。