开源线程池库

时间:2011-02-28 22:55:44

标签: java multithreading jboss weblogic-10.x

我一直在寻找可以用来安排作业的开源线程池库,一旦完成单个作业,我想在线程中做一些通知,这样我就可以完成剩下的任务了。你们是否知道任何开源lib正在做类似的工作。我可能在多个diff服务器中使用这个lib。

我的任务的基本概述是我有项目列表。每个项目都需要提交给其他系统throgh JMS / Webservice,然后等待每个正在处理的项目的响应并执行剩下的任务。

提前致谢

3 个答案:

答案 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给我的工作