Библиотека с открытым исходным кодом - PullRequest
1 голос
/ 01 марта 2011

Я искал библиотеку пула потоков с открытым исходным кодом, которую я мог бы использовать для планирования заданий, и как только это отдельное задание выполнено, я хочу получить некоторое уведомление в потоке, чтобы я мог завершить оставшуюся часть задачи. Ребята, вы знаете какую-нибудь библиотеку с открытым исходным кодом, которая выполняет подобную работу? Я мог бы использовать эту библиотеку в нескольких серверах diff.

Базовый обзор моей задачи: у меня есть список предметов. Каждый элемент должен быть отправлен в другую систему через JMS / Webservice, а затем дождаться ответа для каждого обрабатываемого элемента и выполнить остальную часть задачи.

Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 01 марта 2011

Как насчет juc ThreadPoolExecutor ?Правильно упакованный и в сочетании с разумным использованием Future , он должен соответствовать вашим заявленным спецификациям.Если у вас есть определенное поведение «блокировать этот поток до тех пор, пока следующий набор задач не завершит», вы можете также использовать CompletionService .

.способ использования Quartz Scheduler , если вам действительно нужна полностью запланированная служба планирования задач.Похоже, это излишне для вашей проблемы, но вы не дали конкретику.Если вы идете по этому пути, то здесь, в SO, есть много хороших Q + A на Quartz Scheduler .

1 голос
/ 01 марта 2011

Проверьте ScheduledExecutors, запускайте beepForAnHour один раз через 10 секунд, затем каждые 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

0 голосов
/ 01 марта 2011

Звучит как работа для Кварц для меня

...