Die vier Möglichkeiten, wie Java einen Thread-Pool erstellt, sind: 1. newCachedThreadPool erstellt einen zwischenspeicherbaren Thread-Pool. 2. newFixedThreadPool erstellt einen Thread-Pool fester Länge.
Java stellt über Executors vier Thread-Pools bereit:
newCachedThreadPool erstellt einen zwischenspeicherbaren Thread-Pool. Wenn die Länge des Thread-Pools den Verarbeitungsbedarf übersteigt, kann dies geschehen Leerlauf-Threads flexibel recyceln Wenn es keine Möglichkeit gibt, Leerlauf-Threads wiederzuverwenden, erstellen Sie neue Threads.
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 einen eindeutigen Arbeitsthread zum Ausführen von Aufgaben verwendet und sicherstellt, dass alle Aufgaben in der angegebenen Reihenfolge (FIFO, LIFO, Priorität) ausgeführt werden.
Weitere Informationen finden Sie im Blog des Bloggers Java Concurrent Programming: Verwendung des Thread-Pools
1.newCachedThreadPool Der Thread-Pool hier ist unendlich. Wenn ein Thread seine Aufgabe abschließt, kann dieser Thread als Nächstes ausgeführt werden Schließen Sie die zugewiesene Aufgabe ab, anstatt einen neuen Thread zu erstellen.
public static void main(String[] args) { ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); for (int i = 0; i < 10; i++) { final int index = i; try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } cachedThreadPool.execute(new Runnable() { public void run() { System.out.println(index); } }); } }
2.newFixedThreadPool
public static void main(String[] args) { ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3); for (int i = 0; i < 10; i++) { final int index = i; fixedThreadPool.execute(new Runnable() { public void run() { try { System.out.println(index); Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } }); } }
3.newScheduledThreadPoo
public static void main(String[] args) { ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5); for (int i = 0; i < 10; i++) { scheduledThreadPool.schedule(new Runnable() { public void run() { System.out.println("delay 3 seconds"); } }, 3, TimeUnit.SECONDS); } }
4.newSingleThreadExecutor führt Thread-Aufgaben nacheinander aus. Aber im Gegensatz zu einem einzelnen Thread kann dieser Thread-Pool nur in einem Thread existieren , nachdem dieser Thread beendet ist, wird ein anderer Thread ausgefüllt
public static void main(String[] args) { ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor(); for (int i = 0; i < 10; i++) { final int index = i; singleThreadExecutor.execute(new Runnable() { public void run() { /* System.out.println(index);*/ try { System.out.println(index); Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } }); } }
Empfohlenes Tutorial: „Java-Tutorial“
Das obige ist der detaillierte Inhalt vonWelche vier Möglichkeiten gibt es, einen Thread-Pool in Java zu erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!