Terminierung eines Anrufs zu einer festen Rate

8

Ich habe eine Aufgabe, die ich mit einer festen Rate ausführen möchte. Ich brauche aber auch das Ergebnis der Aufgabe nach jeder Ausführung. Hier ist, was ich versucht habe:

Die Aufgabe

%Vor%

Nein, ich habe versucht, ScheduledExecutorService für die Planung zu verwenden. Es stellt sich heraus, dass Sie eine Callable nicht mit einer festen Rate einplanen können, nur eine Runnable kann dies tun.

Bitte beraten.

    
user801138 07.09.2011, 09:42
quelle

2 Antworten

8

Verwenden Sie ein Erzeuger / Verbraucher-Muster : Lassen Sie das Runnable put sein Ergebnis auf einem BlockingQueue . Habe noch einen Thread take () aus der Warteschlange.

Take ist ein blockierender Anruf (dh er gibt nur zurück, wenn sich etwas in der Warteschlange befindet), sodass Sie Ihre Ergebnisse erhalten, sobald sie verfügbar sind.

Sie können dies mit dem hollywood-Muster kombinieren, um den wartenden Thread mit einem Callback zu versehen, damit Ihr Code aufgerufen wird, wenn etwas passiert ist verfügbar.

    
Bohemian 07.09.2011, 09:45
quelle
-1

Wenn Sie sich nicht um den Rückgabewert von Callable kümmern, können Sie ihn in ein Runnable umbrechen und damit an ScheduledExecutorService übergeben.

%Vor%

Wenn Sie an ScheduledExecutroService senden möchten, können Sie Ihre Callable :

übergeben %Vor%     
Cem Catikkas 10.09.2011 19:05
quelle

Tags und Links