2 Stimmen

Quelloffene Threadpool-Bibliothek

Ich war auf der Suche nach Open-Source-Thread-Pool-Lib, die ich verwenden kann, um die Aufträge zu planen und sobald der einzelne Auftrag erledigt ist, möchte ich eine Benachrichtigung in den Thread, so dass ich den Rest der Aufgabe beenden kann. Kennen Sie eine Open-Source-Lib, die eine ähnliche Art von Arbeit macht. Ich könnte diese Lib in mehreren Diff-Server verwenden.

Grundlegender Überblick über meine Aufgabe ist, dass ich eine Liste von Artikeln habe. Jedes Element muss an andere System throgh JMS/Webservice eingereicht werden und dann warten Sie auf die Antwort für jedes Element verarbeitet werden und den Rest der Aufgabe zu tun.

Vielen Dank im Voraus

4voto

andersoj Punkte 21576

Wie wäre es mit J.U.C.? ThreadPoolExecutor ? Richtig verpackt und in Verbindung mit einem vernünftigen Einsatz von Zukunft sollte sie den von Ihnen angegebenen Spezifikationen entsprechen. Wenn Sie ein bestimmtes "diesen Thread blockieren, bis der folgende Aufgabensatz abgeschlossen ist"-Verhalten haben, können Sie auch eine CompletionService .

Wie ein anderer Antwortender bemerkte, könnten Sie auch den ganzen Weg bis zur Verwendung von Quarz-Scheduler wenn Sie wirklich einen vollwertigen Aufgabenplanungsdienst benötigen. Es klingt, als ob das für Ihr Problem zu viel wäre, aber Sie haben keine genauen Angaben gemacht. Wenn dies der Weg ist, den Sie einschlagen, gibt es eine viele gute Fragen und Antworten zu Quartz Scheduler hier bei SO.

1voto

RandomUser Punkte 4032

Schauen Sie sich die ScheduledExecutors an, führen Sie beepForAnHour einmal nach 10 Sekunden und dann alle 10 Sekunden aus:

 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);
    }
 }

Von:

http://download.oracle.com/javase/6/docs/api/java/util/concurrent/ScheduledExecutorService.html

1voto

harschware Punkte 12227

Klingt wie ein Job für Quarz für mich

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X