Executor-Dienst in Java - Wie man einzelnen Thread-Code konvertiert, um Executor zu verwenden

8

Verzeihen Sie, wenn die Frage albern klingt - ich fange gerade an, Executor zu benutzen.

Ich habe eine bestehende Java-App, die Threads auf diese Weise verwendet - im Grunde werden eigenständige Threads verwendet -

%Vor%

Wie Sie oben sehen können, gibt die Funktion einen neuen Thread zurück.

Nun wird in der main () - Funktion des Programms ein neuer Thread auf diese Weise erstellt -

%Vor%

Ich möchte einen Executor-Service erstellen (mit einer festen Anzahl von Threads) - & gt; und dann die Erstellung des neuen Threads / Ausführung der Task durch den neuen Thread an diesen Executor übergeben.

Da ich für den Executor noch sehr neu bin, möchte ich wissen, wie ich den obigen Code ändere, so dass anstelle eines neuen separaten Threads stattdessen ein neuer Thread innerhalb des Thread-Pools erstellt wird. Ich kann keinen Befehl zum Erstellen eines Threads sehen (innerhalb des Thread-Pools) - & gt; übergeben Sie die obige Aufgabe an diesen Thread (und nicht an einen eigenständigen Thread wie oben).

Bitte lassen Sie mich wissen, wie Sie dieses Problem lösen können.

    
Arvind 17.02.2013, 06:50
quelle

3 Antworten

9

In Ihrem main können Sie etwas wie folgt schreiben:

%Vor%

Die Methode submit führt das Runnable für einen der Threads im Executor-Service aus.

Hinweis: Vergessen Sie nicht, den Executor-Dienst herunterzufahren, wenn Sie ihn nicht mehr benötigen oder das Programm nicht mehr beendet werden kann.

    
assylias 17.02.2013, 06:55
quelle
5

Machen Sie Ihre Forschung, bevor Sie fragen. Die Idee besteht darin, eine Klasse zu erstellen, die Runnable implementiert und sie mit dem Executor-Service ausführt.

Beispiel aus: Java Concurrency (Multithreading) - Lernprogramm

Implementierung des Worker (der Runnable implementiert):

%Vor%

So verwenden Sie den Executor-Service, um den Worker-Thread auszulösen.

%Vor%     
zengr 17.02.2013 06:55
quelle
1

Sie meinen so etwas?

%Vor%     
Axel 17.02.2013 06:58
quelle