Ich bin verwirrt über die folgenden Punkte:
Um Threads in einem Java-Programm zu verwenden, ist es am einfachsten, die Klasse Thread zu erweitern und die Schnittstelle runnable zu implementieren (oder einfach runnable zu implementieren).
Um die Ausführung des Threads zu starten, müssen wir die Methode start() des Threads aufrufen, die wiederum die Methode run() des Threads aufruft. Und so startet der Thread.
Die Methode start() (wenn ich mich nicht irre) muss genau und nur einmal aufgerufen werden für jeden Faden. Infolgedessen können Thread-Instanzen nicht wiederverwendet werden, es sei denn, die Run-Methode selbst läuft in einer Art Endlosschleife, die eine benutzerdefinierte Implementierung der Wiederverwendung des Threads ermöglicht.
Jetzt die Javadoc Linktext sagt
Bei Aufrufen zur Ausführung werden zuvor erstellte Threads wiederverwendet, falls vorhanden.
Ich verstehe nicht, wie dies umgesetzt wird. Ich stelle in der Execute-Methode der Executor-Methode meinen eigenen Thread zur Verfügung, z.B.
ExecutorService myCachedPool = Executors.newCachedThreadPool();
myCachedPool.execute(new Runnable(){public void run(){
//do something time consuming
}});
Wie kann dieser benutzerdefinierte Thread, den ich dem Executor-Framework zugewiesen habe, wiederverwendet werden?
Ist es Executor erlaubt, die Methode start() mehr als 1 Mal aufzurufen, während wir dies in unseren Programmen nicht dürfen? Habe ich etwas falsch verstanden?
Ich danke Ihnen.