Thread-Pool ist eine Form des Multithreadings, das während der Verarbeitung Aufgaben zu einer Warteschlange hinzufügt und diese Aufgaben dann automatisch startet, nachdem der Thread erstellt wurde. Thread-Pool-Threads sind Hintergrund-Threads. Jeder Thread verwendet die Standardstapelgröße, wird mit der Standardpriorität ausgeführt und befindet sich in einem Multithread-Apartment .
Wenn ein Thread im verwalteten Code inaktiv ist (z. B. beim Warten auf ein Ereignis), fügt der Thread-Pool einen anderen ein Worker-Thread, um alle Prozessoren zu beschäftigen.
Wenn alle Thread-Pool-Threads ständig beschäftigt bleiben, die Warteschlange jedoch ausstehende Arbeit enthält, erstellt der Thread-Pool nach einer Weile einen weiteren Arbeitsthread, aber die Anzahl der Threads wird nie das Maximum überschreiten. Threads, die das Maximum überschreiten, können in die Warteschlange gestellt werden, werden aber erst gestartet, wenn andere Threads fertig sind. (Empfohlenes Lernen: Java-Kurs)
Die Verwendung von vier Thread-Pools in Java:
Java stellt vier Thread-Pools über Executoren bereit bzw.:
newCachedThreadPool erstellt einen zwischenspeicherbaren Thread-Pool. Wenn die Länge des Thread-Pools den Verarbeitungsbedarf überschreitet, können inaktive Threads flexibel recycelt werden. Wenn kein Recycling erfolgt, wird ein neuer Thread erstellt.
newFixedThreadPool erstellt einen Thread-Pool mit fester Länge, der die maximale Anzahl gleichzeitiger Threads steuern kann, die in der Warteschlange warten.
newScheduledThreadPool erstellt einen Thread-Pool fester Länge, der die geplante und periodische Aufgabenausführung unterstützt.
newSingleThreadExecutor erstellt einen Single-Threaded-Thread-Pool, der nur den einzigen Arbeitsthread zum Ausführen von Aufgaben verwendet und sicherstellt, dass alle Aufgaben in der angegebenen Reihenfolge (FIFO, LIFO, Priorität) ausgeführt werden.
newCachedThreadPool
Erstellen Sie einen zwischenspeicherbaren Thread-Pool, wenn die Länge des Thread-Pools den Verarbeitungsbedarf übersteigt Recycling, erstelle einen neuen Thread. Der Beispielcode lautet wie folgt:
package test; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ThreadPoolExecutorTest { public static void main(String[] args) { ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); for (int i = 0; i < 10; i++) { final int index = i; try { Thread.sleep(index * 1000); } catch (InterruptedException e) { e.printStackTrace(); } cachedThreadPool.execute(new Runnable() { public void run() { System.out.println(index); } }); } } }
Das obige ist der detaillierte Inhalt vonWas ist Thread-Pool in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!