Heim > Java > javaLernprogramm > Hauptteil

Was ist ein Java-Thread-Pool?

(*-*)浩
Freigeben: 2019-12-04 09:28:19
Original
2947 Leute haben es durchsucht

Was ist ein Java-Thread-Pool?

Was ist der Thread-Pool von Java, welche Typen gibt es und welche Funktionen haben sie?                              >) Thread-Pool ist eine Form der Multi-Thread-Verarbeitung. Aufgaben werden während der Verarbeitung zur Warteschlange hinzugefügt. Diese Aufgaben werden dann automatisch gestartet, nachdem die Threads mit der Standardpriorität ausgeführt wurden Multithread-Apartment: Wenn ein Thread im verwalteten Code inaktiv ist, fügt der Thread-Pool einen weiteren Arbeitsthread ein, um alle Prozessoren zu beschäftigen.

Wenn alle Thread-Pools jederzeit ausgelastet bleiben, die Warteschlangen jedoch ausstehende Arbeit enthalten, wird der Thread-Pool nach einer gewissen Zeit nie die maximale Anzahl an Arbeitsthreads überschreiten. Threads, die das Maximum überschreiten, können in die Warteschlange gestellt werden, können aber erst gestartet werden, wenn andere Threads fertig sind.

Die oberste Ebene des Thread-Pools in Java ist Executor. Es handelt sich nicht um einen Thread-Pool, sondern lediglich um ein Tool zum Ausführen von Threads. Der eigentliche Thread-Pool ist ExecutorService.

Was sind die Thread-Pools in Java?

1.newCachedThreadPool erstellt einen zwischenspeicherbaren Thread-Pool

2.newFixedThreadPool erstellt einen Thread-Pool fester Länge

3.newScheduledThreadPool erstellt einen Thread-Pool fester Länge

4.newSingleThreadExecutor erstellt einen Single-Threaded-Thread-Pool

Das Folgende wird einzeln analysiert:

newCachedThreadPool,

ist a Ein Thread-Pool mit einer variablen Anzahl von Threads und seiner maximalen Anzahl von Threads ist Integer.MAX_VALUE. Diese Zahl ist sehr groß. Wenn die Länge des Thread-Pools den Verarbeitungsbedarf übersteigt, können inaktive Threads flexibel recycelt werden . Wenn kein Recycling erfolgt, erstellen Sie einen neuen Thread. Für inaktive Threads im Thread-Pool gelten jedoch Zeitlimits von 60 Sekunden. Wenn inaktive Threads länger als 60 Sekunden sind, werden sie wiederverwendet.

Durch den Aufruf von „execute“ wird der zuvor erstellte Thread wiederverwendet (sofern der Thread verfügbar ist). Diese Art von Thread-Pool eignet sich besser zum Ausführen einer großen Anzahl weniger zeitaufwändiger Aufgaben. Wenn der gesamte Thread-Pool inaktiv ist, kommt es zu einer Zeitüberschreitung der Threads im Thread-Pool und zum Stoppen.

newFixedThreadPool

Erstellt einen Thread-Pool mit einer angegebenen Anzahl von Worker-Threads, wenn eine Aufgabe übermittelt wird, werden sie nicht recycelt, es sei denn, der Thread Der Pool wird geschlossen. Wenn die Anzahl der Arbeitsthreads die anfängliche maximale Anzahl von Thread-Pools erreicht, werden die übermittelten Aufgaben in der Pool-Warteschlange gespeichert (keine Größenbeschränkung).

Da newFixedThreadPool nur Kernthreads hat und diese Kernthreads nicht recycelt werden, kann es schneller auf externe Anfragen reagieren.

newScheduledThreadPool

Erstellen Sie einen Thread-Pool mit einer festen Anzahl von Kern-Threads, aber einer unbegrenzten Anzahl von Nicht-Kern-Threads. Diese werden sofort wiederverwendet, wenn sie inaktiv sind. Befehle können geplant werden nach einer bestimmten Verzögerung oder in regelmäßigen Abständen ausgeführt werden. Diese Art von Thread-Pool wird hauptsächlich zur Ausführung geplanter Aufgaben und wiederkehrender Aufgaben mit einem festen Zeitraum verwendet.

newSingleThreadExecutor

Diese Art von Thread-Pool enthält nur einen Kern-Thread und führt den Thread in einer unbegrenzten Warteschlange aus. Dadurch entfällt die Notwendigkeit, sich mit Thread-Synchronisierungsproblemen zwischen diesen Aufgaben zu befassen Alle Aufgaben werden nacheinander im selben Thread ausgeführt und es darf zu einem bestimmten Zeitpunkt nicht mehr als ein Thread aktiv sein.

Das obige ist der detaillierte Inhalt vonWas ist ein Java-Thread-Pool?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage