【发布时间】:2015-09-25 23:58:06
【问题描述】:
我编写了一个“Producer”类,它连续解析来自特定文件夹的文件。解析后的结果将存储在消费者队列中。
public class Producer extends Thread
{
private BlockingQueue<MyObject> queue;
...
public void run()
{
while (true)
{
//Store email attachments into directory
...
//Fill the queue
queue.put(myObject);
sleep(5*60*1000);
}
}
}
我的消费者类持续检查队列中是否有可用的东西。如果是这样,它正在对解析结果执行一些工作。
public class Consumer extends Thread
{
private BlockingQueue<MyObject> queue;
...
public void run()
{
while (true)
{
MyObject o = queue.poll();
// Work on MyObject 'o'
...
sleep(5*60*1000);
}
}
}
当我运行我的程序时,'top' 显示 JAVA 进程始终处于 100% 状态。我猜是因为无限循环。
这是实现此功能的好方法,还是有更节省资源的方法?
【问题讨论】:
-
你不是在生产者和消费者中都使用共享队列吗?如果我使用共享队列,CPU 使用率为零。看看这个链接:javarevisited.blogspot.in/2012/02/…
-
队列在生产者和消费者之间共享。
标签: java multithreading producer-consumer