Inhaltsverzeichnis
1. corePoolSize Thread-Pool-Kern-Thread-Größe
2. MaximumPoolSize Die maximale Anzahl von Threads im Thread-Pool
3. keepAliveTime-Thread-Überlebenszeit im Leerlauf
4 . Einheit Leerlauf-Thread-Überlebenszeiteinheit
5. workQueue-Arbeitswarteschlange
6. threadFactory-Thread-Factory
7. Handler-Ablehnungsrichtlinie
Heim Java javaLernprogramm Was bedeuten Java-Thread-Pool-Parameter?

Was bedeuten Java-Thread-Pool-Parameter?

May 06, 2023 am 09:22 AM
java

Thread-Pool-Technologie wird häufig in der Java-Multithread-Entwicklung verwendet. Dieser Artikel enthält eine detaillierte Erläuterung der sieben Parameter beim Erstellen eines Java-Thread-Pools.

Was bedeuten Java-Thread-Pool-Parameter?

Wie aus dem Quellcode ersichtlich ist, verfügt der Konstruktor des Thread-Pools über 7 Parameter.

Diese 7 Parameter sind:

  • corePoolSize: die Anzahl der Kernthreads.

  • maximumPoolSize: Maximale Anzahl von Threads.

  • keepAliveTime: Überlebenszeit des Leerlauf-Threads.

  • TimeUnit: Zeiteinheit.

  • BlockingQueue: Thread-Pool-Aufgabenwarteschlange.

  • ThreadFactory: Factory zum Erstellen von Threads.

  • RejectedExecutionHandler: Ablehnungsstrategie.

Diese 7 Parameter werden im Folgenden einzeln erklärt.

1. corePoolSize Thread-Pool-Kern-Thread-Größe

Der Thread-Pool behält eine Mindestanzahl von Threads bei. Auch wenn diese Threads den Leerlaufstatus verarbeiten, werden sie nicht zerstört, es sei denn, „allowCoreThreadTimeOut“ ist festgelegt. Die Mindestanzahl an Threads beträgt hier corePoolSize.

2. MaximumPoolSize Die maximale Anzahl von Threads im Thread-Pool

Nachdem eine Aufgabe an den Thread-Pool übermittelt wurde, wird zunächst festgestellt, ob noch inaktive Threads vorhanden sind. Wenn ja, wird die Aufgabe direkt übergeben Wenn dies nicht der Fall ist, wird es in der Arbeitswarteschlange zwischengespeichert. Wenn die Arbeitswarteschlange voll ist, wird ein neuer Thread erstellt und dann eine Aufgabe aus der Arbeitswarteschlange entfernt Kopf der Arbeitswarteschlange und zur Verarbeitung an den neuen Thread übergeben, und die neu übermittelte Aufgabe wird am Ende der Arbeitswarteschlange platziert. Der Thread-Pool erstellt keine unbegrenzten Threads. Die maximale Anzahl von Threads ist durch MaximumPoolSize begrenzt.

3. keepAliveTime-Thread-Überlebenszeit im Leerlauf

Wenn ein Thread inaktiv ist und die aktuelle Anzahl der Threads größer als corePoolSize ist, wird der inaktive Thread nach der angegebenen Zeit zerstört. Die hier angegebene Zeit wird durch keepAliveTime festgelegt

4 . Einheit Leerlauf-Thread-Überlebenszeiteinheit

Die Maßeinheit von keepAliveTime

5. workQueue-Arbeitswarteschlange

Nachdem eine neue Aufgabe übermittelt wurde, wird sie zuerst in diese Arbeitswarteschlange eingegeben und dann während der Aufgabenplanung aus der Warteschlange entfernt . In JDK werden vier Arten von Arbeitswarteschlangen bereitgestellt:

①ArrayBlockingQueue

Array-basierte begrenzte Blockierungswarteschlange, sortiert nach FIFO. Nachdem eine neue Aufgabe eingegangen ist, wird sie am Ende der Warteschlange platziert. Das begrenzte Array kann Probleme mit der Ressourcenerschöpfung verhindern. Wenn die Anzahl der Threads im Thread-Pool corePoolSize erreicht und eine neue Aufgabe eingeht, wird die Aufgabe am Ende der Warteschlange platziert und wartet auf die Planung. Wenn die Warteschlange bereits voll ist, wird ein neuer Thread erstellt. Wenn die Anzahl der Threads maxPoolSize erreicht hat, wird die Ablehnungsrichtlinie ausgeführt.

②LinkedBlockingQuene

Unbegrenzte Blockierungswarteschlange basierend auf einer verknüpften Liste (tatsächlich ist die maximale Kapazität Interger.MAX), sortiert nach FIFO. Aufgrund der annähernd unbegrenzten Natur der Warteschlange werden neue Aufgaben in der Warteschlange gespeichert, ohne dass neue Threads erstellt werden, wenn maxPoolSize verwendet wird. Wenn diese Arbeitswarteschlange verwendet wird, ist der Parameter maxPoolSize Tatsächlich funktioniert nicht.

③SynchronousQuene

Eine blockierende Warteschlange, die keine Aufgaben zwischenspeichert. Der Produzent stellt eine Aufgabe ein und muss warten, bis der Verbraucher die Aufgabe herausnimmt. Das heißt, wenn eine neue Aufgabe eingeht, wird sie nicht zwischengespeichert, sondern direkt zur Ausführung der Aufgabe eingeplant. Wenn keine Threads verfügbar sind, wird ein neuer Thread erstellt. Es wird eine Ablehnungsrichtlinie ausgeführt.

④PriorityBlockingQueue

Eine unbegrenzte Blockierungswarteschlange mit Priorität. Die Priorität wird über den Parameter Comparator implementiert.

6. threadFactory-Thread-Factory

Die Factory, die beim Erstellen eines neuen Threads verwendet wird, kann zum Festlegen des Thread-Namens, ob es sich um einen Daemon-Thread usw. handelt, verwendet werden.

7. Handler-Ablehnungsrichtlinie

Wenn die Aufgaben im Die Arbeitswarteschlange hat das maximale Limit erreicht, und die Anzahl der Threads im Thread-Pool hat ebenfalls das maximale Limit erreicht. Wenn zu diesem Zeitpunkt eine neue Aufgabe eingereicht wird, wie wird damit umgegangen? Die Ablehnungsrichtlinie hier soll dieses Problem lösen:

①CallerRunsPolicy

Unter dieser Richtlinie wird die Ausführungsmethode der abgelehnten Aufgabe direkt im Aufrufer-Thread ausgeführt, es sei denn, der Thread-Pool wurde heruntergefahren Aufgabe direkt bearbeiten.

Was bedeuten Java-Thread-Pool-Parameter?

②AbortPolicy

Unter dieser Richtlinie wird die Aufgabe direkt verworfen und eine RejectedExecutionException ausgelöst.

Was bedeuten Java-Thread-Pool-Parameter?

③DiscardPolicy

Unter dieser Richtlinie wird die Aufgabe direkt verworfen und es wird nichts unternommen.

Was bedeuten Java-Thread-Pool-Parameter?

④DiscardOldestPolicy

Unter dieser Richtlinie verwerfen Sie die früheste Aufgabe, die in die Warteschlange gelangt, und versuchen Sie dann, die abgelehnte Aufgabe in die Warteschlange zu stellen

Was bedeuten Java-Thread-Pool-Parameter?

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

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Zeitstempel für Datum in Java Zeitstempel für Datum in Java Aug 30, 2024 pm 04:28 PM

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Java -Programm, um das Kapselvolumen zu finden Java -Programm, um das Kapselvolumen zu finden Feb 07, 2025 am 11:37 AM

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

Wie führe ich Ihre erste Spring -Boot -Anwendung in der Spring Tool Suite aus? Wie führe ich Ihre erste Spring -Boot -Anwendung in der Spring Tool Suite aus? Feb 07, 2025 pm 12:11 PM

Spring Boot vereinfacht die Schaffung robuster, skalierbarer und produktionsbereiteter Java-Anwendungen, wodurch die Java-Entwicklung revolutioniert wird. Der Ansatz "Übereinkommen über Konfiguration", der dem Feder -Ökosystem inhärent ist, minimiert das manuelle Setup, Allo

See all articles