我一直在寻找可以用来安排作业的开源线程池库,一旦完成单个作业,我想在线程中做一些通知,这样我就可以完成剩下的任务了。你们是否知道任何开源lib正在做类似的工作。我可能在多个diff服务器中使用这个lib。
我的任务的基本概述是我有项目列表。每个项目都需要提交给其他系统throgh JMS / Webservice,然后等待每个正在处理的项目的响应并执行剩下的任务。
提前致谢
答案 0 :(得分:3)
j.u.c。ThreadPoolExecutor怎么样?正确包装并明智地使用Future,它应符合您的规定。如果您具有特定的“阻止此线程,直到完成以下任务集”行为,您还可以使用CompletionService。
正如另一位回答者指出的那样,如果你真的需要一个完全充实的任务调度服务,你也可以一直跳到使用Quartz Scheduler。听起来这对你的问题来说太过分了,但是你没有给出细节。如果这是你选择的路径,那么在这里有一个lot of good Q+A on Quartz Scheduler。
答案 1 :(得分:1)
查看ScheduledExecutors,在10秒后运行beepForAnHour,然后每10秒运行一次:
import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
public void beepForAnHour() {
final Runnable beeper = new Runnable() {
public void run() { System.out.println("beep"); }
};
final ScheduledFuture<?> beeperHandle =
scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
scheduler.schedule(new Runnable() {
public void run() { beeperHandle.cancel(true); }
}, 60 * 60, SECONDS);
}
}
自:
http://download.oracle.com/javase/6/docs/api/java/util/concurrent/ScheduledExecutorService.html
答案 2 :(得分:0)
听起来像Quartz给我的工作