diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Master/Reference Architectures and Patterns/hjp5/html/k100144.html | |
| download | Studium-master.tar.gz Studium-master.tar.bz2 | |
Diffstat (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100144.html')
| -rw-r--r-- | Master/Reference Architectures and Patterns/hjp5/html/k100144.html | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100144.html b/Master/Reference Architectures and Patterns/hjp5/html/k100144.html new file mode 100644 index 0000000..dcfd0d4 --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100144.html @@ -0,0 +1,123 @@ +<html>
+<head>
+<title>
+Handbuch der Java-Programmierung, 5. Auflage
+</title>
+</head>
+<body>
+<a name="startofbody"></a>
+<script language="JavaScript" src="hjp4lib.js">
+</script>
+<script language="JavaScript">
+installKbdHandler("97,#startofbody;101,#endofbody;116,cover.html;122,k100003.html;115,search.html;105,index.html;100,JDKDOCS;112,APIDOCS;104,k100143.html;106,k100143.html;107,k100145.html;108,k100150.html");
+</script>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100143.html"> << </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100143.html"> < </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100145.html"> > </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100150.html"> >> </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
+<td align="right">Kapitel 22 - Multithreading
+</table>
+<hr>
+
+
+<!-- Section -->
+<a name="sectionthreads"></a>
+<h2>22.1 Grundlagen und Begriffe </h2>
+<hr>
+<ul>
+<li><a href="k100144.html#sectionthreads">22.1 Grundlagen und Begriffe</a>
+</ul>
+<hr>
+
+<p>
+Kaum eine wichtige Programmiersprache der letzten Jahre hat das Konzept
+der <a name="ixa101461"><i>Nebenläufigkeit</i></a> innerhalb
+der Sprache implementiert. Mit Nebenläufigkeit bezeichnet man
+die Fähigkeit eines Systems, zwei oder mehr Vorgänge gleichzeitig
+oder quasi-gleichzeitig ausführen zu können. Lediglich ADA
+stellt sowohl parallele Prozesse als auch Mechanismen zur Kommunikation
+und Synchronisation zur Verfügung, die direkt in die Sprache
+eingebettet sind. Durch Weiterentwicklungen im Bereich der Betriebssystemtechnologie
+wurde allerdings das Konzept der <a name="ixa101462"><i>Threads</i></a>
+immer populärer und auf der Basis von Library-Routinen auch konventionellen
+Programmiersprachen zur Verfügung gestellt.
+
+<p>
+Java hat Threads direkt in die Sprache integriert und mit den erforderlichen
+Hilfsmitteln als Konstrukt zur Realisierung der Nebenläufigkeit
+implementiert. Ein Thread ist ein eigenständiges Programmfragment,
+das parallel zu anderen Threads laufen kann. Ein Thread ähnelt
+damit einem <i>prozess</i>, arbeitet aber auf einer feineren Ebene.
+Während ein prozess das Instrument zur Ausführung eines
+kompletten Programms ist, können innerhalb dieses Prozesses mehrere
+Threads parallel laufen. Der Laufzeit-Overhead zur Erzeugung und Verwaltung
+eines Threads ist relativ gering und kann in den meisten Programmen
+vernachlässigt werden. Ein wichtiger Unterschied zwischen Threads
+und Prozessen ist der, dass alle Threads eines Programms sich einen
+gemeinsamen Adreßraum teilen, also auf dieselben Variablen zugreifen,
+während die Adreßräume unterschiedlicher Prozesse
+streng voneinander getrennt sind.
+
+<p>
+Die Implementierung von Threads war eine explizite Anforderung an
+das Design der Sprache. Threads sollen unter anderem die Implementierung
+grafischer Anwendungen erleichtern, die durch Simulationen komplexer
+Abläufe oft inhärent nebenläufig sind. Threads können
+auch dazu verwendet werden, die Bedienbarkeit von Dialoganwendungen
+zu verbessern, indem rechenintensive Anwendungen im Hintergrund ablaufen.
+
+<p>
+Threads werden in Java durch die Klasse <a name="ixa101463"><a href="index_t.html#ixb100591"><font color=#000080><tt>Thread</tt></font></a></a>
+und das Interface <a name="ixa101464"><a href="index_r.html#ixb101107"><font color=#000080><tt>Runnable</tt></font></a></a>
+implementiert. In beiden Fällen wird der Thread-Body, also der
+parallel auszuführende Code, in Form der überlagerten Methode
+<a name="ixa101465"><a href="index_r.html#ixb101108"><font color=#000080><tt>run</tt></font></a></a>
+zur Verfügung gestellt. Die Kommunikation kann dann durch Zugriff
+auf die Instanz- oder Klassenvariablen oder durch Aufruf beliebiger
+Methoden, die innerhalb von <a href="index_r.html#ixb101108"><font color=#000080><tt>run</tt></font></a>
+sichtbar sind, erfolgen. Zur Synchronisation stellt Java das aus der
+Betriebssystemtheorie bekannte Konzept des <a name="ixa101466"><i>Monitors</i></a>
+zur Verfügung, das es erlaubt, kritische Abschnitte innerhalb
+korrekt geklammerter Programmfragmente und Methoden zu kapseln und
+so den Zugriff auf gemeinsam benutzte Datenstrukturen zu koordinieren.
+
+<p>
+Darüber hinaus bietet Java Funktionen zur Verwaltung von Threads.
+Diese erlauben es, Threads in Gruppen zusammenzufassen, zu priorisieren
+und Informationen über Eigenschaften von Threads zu gewinnen.
+Das Scheduling kann dabei wahlweise <i>unterbrechend</i> oder <i>nichtunterbrechend</i>
+implementiert sein. Die Sprachspezifikation legt dies nicht endgültig
+fest, aber in den meisten Java-Implementierungen wird dies von den
+Möglichkeiten des darunter liegenden Betriebssystems abhängen.
+<hr>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage, Addison
+Wesley, Version 5.0.1
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100143.html"> << </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100143.html"> < </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100145.html"> > </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100150.html"> >> </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
+<td align="right">© 1998, 2007 Guido Krüger & Thomas
+Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
+</table>
+<a name="endofbody"></a>
+</body>
+</html>
|
