From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../hjp5/html/k100148.html | 246 +++++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/html/k100148.html (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100148.html') diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100148.html b/Master/Reference Architectures and Patterns/hjp5/html/k100148.html new file mode 100644 index 0000000..9e9547a --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100148.html @@ -0,0 +1,246 @@ + + + +Handbuch der Java-Programmierung, 5. Auflage + + + + + + + + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage +
 <<  +  <   +  >   + >>  + API  +Kapitel 22 - Multithreading +
+
+ + + + +

22.5 Verwalten von Threads

+
+ +
+ +

+Threads können in Java nicht nur ausgeführt und synchronisiert +werden, sondern besitzen auch eine Reihe administrativer Eigenschaften, +die besonders dann nützlich sind, wenn das Thread-Konzept stark +genutzt wird. Diese administrativen Eigenschaften lassen sich in zwei +Gruppen unterteilen. Zum einen gibt es Eigenschaften, die bei den +Threads selbst zu finden sind, beispielsweise die Priorität +oder der Name eines Threads. Zum anderen gibt es Eigenschaften, +die darauf begründet sind, dass jeder Thread in Java zu einer +Thread-Gruppe gehört, die untereinander über Vater-Kind-Beziehungen +miteinander in Verbindung stehen. Beide Gruppen von Eigenschaften +sollen im folgenden kurz erklärt werden. + + + + +

22.5.1 Priorität und Name

+ +

+Jeder Thread in Java hat einen eindeutigen Namen. Wird dieser nicht +explizit vergeben (beispielsweise im Konstruktor), so vergibt Java +einen automatisch generierten Namen der Form "Thread-" ++ n, wobei n ein int +ist. Alternativ kann einem Thread mit der Methode setName +auch vom Programm selbst ein Name zugewiesen werden: +

+ + + + + +
+ +
+public void setName(String name)
+
+
+
+java.lang.Thread
+ +

+Mit Hilfe der Methode getName +kann der Name eines Threads abgefragt werden: +

+ + + + + +
+ +
+public String getName()
+
+
+
+java.lang.Thread
+ +

+Neben einem Namen besitzt ein Thread auch eine Priorität. +Die Priorität steuert den Scheduler in der Weise, dass bei Vorhandensein +mehrerer bereiter Threads diejenigen mit höherer Priorität +vor denen mit niedrigerer Priorität ausgeführt werden. Beim +Anlegen eines neuen Threads bekommt dieser die Priorität des +aktuellen Threads. Mit Hilfe der Methode setPriority +kann die Priorität gesetzt und mit getPriority +abgefragt werden: +

+ + + + + +
+ +
+public void setPriority(int newPriority)
+
+public int getPriority()
+
+
+
+java.lang.Thread
+ +

+Als Parameter kann an setPriority +ein Wert übergeben werden, der zwischen den Konstanten Thread.MIN_PRIORITY +und Thread.MAX_PRIORITY +liegt. Der Normalwert wird durch die Konstante Thread.NORM_PRIORITY +festgelegt. In der aktuellen Version des JDK haben diese Konstanten +die Werte 1, 5 und 10. + + + + +

22.5.2 Thread-Gruppen

+ +

+Thread-Gruppen dienen dazu, Informationen zu verwalten, die +nicht nur für einen einzelnen Thread von Bedeutung sind, sondern +für eine ganze Gruppe. Weiterhin bieten sie Methoden, die auf +alle Threads einer Gruppe angewendet werden können, und sie erlauben +es, die Threads einer Gruppe aufzuzählen. In der Java-Klassenbibliothek +gibt es zu diesem Zweck eine eigene Klasse ThreadGroup. + +

+Der Einstieg zur Anwendung von Objekten der Klasse ThreadGroup +ist die Methode getThreadGroup +der Klasse Thread. +Sie liefert das ThreadGroup-Objekt, +dem der aktuelle Thread +angehört. Alle Thread-Gruppen sind über eine Vater-Kind-Beziehung +miteinander verkettet. Mit Hilfe der Methode getParent +von ThreadGroup +kann die Vater-Thread-Gruppe ermittelt werden: +

+ + + + + +
+ +
+public ThreadGroup getParent()
+
+
+
+java.lang.ThreadGroup
+ +

+Durch mehrfache Anwendung kann so die Wurzel aller Thread-Gruppen +ermittelt werden. Steht eine ThreadGroup +ganz oben in der Hierarchie, so liefert die Methode getParent +den Wert null. + +

+Um die Menge aller Threads zu bestimmen, die in der aktuellen Thread-Gruppe +und ihren Untergruppen enthalten sind, kann die Methode enumerate +verwendet werden: +

+ + + + + +
+ +
+public int enumerate(Thread[] list)
+
+
+
+java.lang.ThreadGroup
+ +

+enumerate +erwartet ein Array von Threads, das beim Aufruf mit allen Threads, +die zu dieser Thread-Gruppe oder einer ihrer Untergruppen gehören, +gefüllt wird. Das Array sollte vor dem Aufruf bereits auf die +erforderliche Größe dimensioniert werden. Als Anhaltspunkt +kann dabei das Ergebnis der Methode activeCount +dienen, die die Anzahl der aktiven Threads in der aktuellen Thread-Gruppe +und allen Thread-Gruppen, die die aktuelle Thread-Gruppe als Vorfahr +haben, angibt: +

+ + + + + +
+ +
+public int activeCount()
+
+
+
+java.lang.ThreadGroup
+


+ + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage, Addison +Wesley, Version 5.0.1 +
 <<  +  <   +  >   + >>  + API  +© 1998, 2007 Guido Krüger & Thomas +Stark, http://www.javabuch.de +
+ + + -- cgit v1.2.3