【发布时间】:2014-07-07 18:15:54
【问题描述】:
我在https://github.com/gresrun 阅读了有关 Jesque 的信息,我想了解它在巨大负载下的表现如何。排队作业以创建作业类的实例然后使用线程启动工作者的唯一方法是还是有其他方法?我对使用 java.lang.Thread 对象有点怀疑,就像在此链接的示例中对数据有效负载巨大的批处理作业所做的那样。
【问题讨论】:
标签: background-process resque worker
我在https://github.com/gresrun 阅读了有关 Jesque 的信息,我想了解它在巨大负载下的表现如何。排队作业以创建作业类的实例然后使用线程启动工作者的唯一方法是还是有其他方法?我对使用 java.lang.Thread 对象有点怀疑,就像在此链接的示例中对数据有效负载巨大的批处理作业所做的那样。
【问题讨论】:
标签: background-process resque worker
实际上在没有控制的情况下生成线程绝不是一个好主意。
我建议将您的工作人员置于 BlockingQueue 中,然后生成 非常 数量有限的线程(与您的 CPU 一样多,以减少争用)来启动这些工作人员。工作完成后,线程会选择一个新的工作人员并再次启动该过程。一旦队列中没有worker,线程就挂在队列上,等待新的worker。
你可以看看Thread Pool Pattern
【讨论】: