Java Unterschied zwischen fest-threadpool-und geplant-threadpool -
Habe ich einen festen thread-pool, der läuft 7 threads gleichzeitig jederzeit (mit Warteschlange), und ich möchte, um Sie in einer geplanten thread-pool, der nur ausgeführt wird 7 gleichzeitige Arbeitsplätze, sondern können in die Warteschlange/Zeitplan mehr.
Lesen der Dokumentation nicht wirklich mir helfen..
public static ExecutorService newFixedThreadPool(int nThreads)
Erzeugt einen thread-pool verwendet eine fixe Anzahl von threads Betrieb aus
einer gemeinsamen unbegrenzten Warteschlange. Wenn jeder thread beendet, aufgrund eines Fehlers
während der Ausführung vor dem Herunterfahren, wird ein neuer seinen Platz einnehmen, wenn
benötigt zur Ausführung nachfolgender Aufgaben.Parameter:
nThreads - die Anzahl der threads im pool Rückgabe:
der neu erstellte thread-pool
public static ScheduledExecutorService newScheduledThreadPool(int
corePoolSize)Erzeugt einen thread-pool planen, können Befehle ausgeführt werden, nach einem bestimmten
Verzögerung, oder, um ausführen regelmäßig.Parameter:
corePoolSize - die Anzahl der threads zu halten, um in den pool, auch wenn Sie untätig sind. Gibt:
eine neu erstellte scheduled-thread-pool
Was ich nicht verstehe, ist, sind corePoolSize und nThreads die gleiche Sache? Ist ein geplanter thread pool wirklich eine Teilmenge eines fixed thread pool, was bedeutet, dass ich verwenden können, geplant thread-pool als fixed thread pool, können in die Warteschlange verzögerte Aufgaben?
Ich bin derzeit mit einem FixedThreadPool, würde es aber gerne können auch planen von tasks nach einer bestimmten Zeitspanne.. zB. planen von tasks eine Stunde ab jetzt, zum Beispiel. als auch in der Lage zum ausführen sofort, als ich heute mache.
Es könnte haben aufgerufen wurde eine Vollzieher.newFixedScheduledThreadPool(n), aber das ist eine Menge von Buchstaben :/
InformationsquelleAutor Mohamed Nuur | 2011-05-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, im Grunde sind Sie die gleiche Sache, nur mit zusätzlicher scheduling-Funktionalität. Der ScheduledThreadPoolExecutor erstreckt sich auch auf die default-Implementierung des ExecutorService (ThreadPoolExecutor).
nThreads und corePoolSize ist die Anzahl der threads erzeugt werden. Für einen festen Anbieter, es sind immer die gleichen. Mit der weiteren Umsetzung variiert dabei zwischen min (corePoolSize) und max (maxPoolSize).
InformationsquelleAutor mhaller
Ja, es funktioniert, die Art und Weise, in JDK5-6. Während im Prinzip das interface ScheduledExecutorService schweigt auf die Frage der pool-Größe, die eigentliche Implementierung in JDK verwendet einen festen pool:
Klasse ScheduledThreadPoolExecutor
Offensichtlich, dass kann nicht zutreffen, wenn Sie eine andere Implementierung verwenden von ScheduledExecutorService zur Verfügung gestellt von einer Anwendung, framework oder einem anderen Anbieter.
InformationsquelleAutor Affe
Ja, Sie sind genau das gleiche mit Bezug auf thread-pool-Größe: Sie letztlich beide nennen die gleichen ThreadPoolExecutor Konstruktor.
InformationsquelleAutor Peter Knego
Den newScheduledThreadPool Methode wird verwendet, um das erstellen von thread-pool von genau n threads, ob Sie im Leerlauf oder laufen. Das int-argument gibt die Anzahl der threads.
Die Methode newFixedThreadPool ist nicht verwendet, um eine thread-pool genau n threads, ob Sie im Leerlauf oder laufen. Einen festen thread-pool-Größe ändert, basierend auf der Anzahl von aktiven Aufgaben.
InformationsquelleAutor Koray Tugay