Einführung in Verläufe (threads) in Java. (threads Java thread), Lektion, Seite 720496
https://www.purl.org/stefan_ram/pub/threads-java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Verläufe in Java

Ein Verlauf  ist ein zeitlich geordneter Ablauf innerhalb einer Programmausführung (eines Prozesses). Mehrere Verläufe können gleichzeitig  oder fast gleichzeitig („parallel “) ablaufen.

Ein Dämonverlauf  erbringt Dienste für andere Verläufe. Ein Verlauf, der kein Dämonverlauf ist, wird hier auch Hauptverlauf  genannt. Ein Prozeß endet, wenn alle seine Hauptverläufe beendet sind.

Einem Verlauf kann auch ein Rang  (zwischen Thread.MIN_PRIORITY [1] und Thread.MAX_PRIORITY (10), mit Thread.NORM_PRIORITY [5] als Vorgabe) zugeordnet werden, Verläufe mit höherem Rang werden bevorzugt ausgeführt.

Die Dämoneigenschaft und der Rang eines Verlaufs werden auch auf von diesem erzeugte Verläufe übertragen.

Beim Start der Javamaschine gibt es normalerweise einen Hauptverlauf, der die Methode "main" der beim Aufruf der Javamaschine angegebenen Klasse aufruft.

Die existierenden Verläufe werden dann von der Javamaschine solange ausgeführt bis die Methode "exit" der Klasse "Runtime" aktiviert wird (falls die Sicherheitsverwaltung die Ausführung der Operation "exit" zuläßt) oder alle Nichtdämonverläufe beendet wurden (weil die Ausführung ihrer Methode "run" beendet wurde oder eine Ausnahme aus dieser geworfen wurde).

Um einen neuen Verlauf zu erzeugen kann ein Exemplar der Klasse "Thread" (oder einer Erweiterung davon) erzeugt und durch Aktivierung der Methode "start" gestartet werden.

ExampleThread.java

class ExampleThread
extends java.lang.Thread
implements java.lang.Runnable

{ public void run()
{ for( int i = 1; i > 0; ++i )System.out.println( i ); }}

Durch die Auswertung von "new ExampleThread().start()" wird dann der Verlauf erzeugt und die Methode "run" aktiviert. (Diese Methode entspricht der statischen Methode "main" eines Java-Programms).

Wenn die Operation "run" direkt aktiviert wird, dann wird diese zwar ausgeführt, aber innerhalb des aktivierenden Verlaufs.

Damit ein neuer Verlauf erzeugt wird, muß die (ererbte) Operation "start" aktiviert werden, welche dann einen neuen Verlauf erzeugt und darin die Methode "run" aktiviert.

Die Klausel "implements Runnable" wird im obigen Beispiel nicht benötigt. Sie kann aber verwendet werden, wenn ein anderer Weg zur Erzeugung eines Verlaufs gewünscht wird: Ein neuer Verlauf kann dann durch Auswertung des Ausdrucks "new Thread(new ExampleThread()).start()" gestartet werden.

Die Verwendung der Schnittstelle "java.lang.Runnable" ist im allgemeinen auch dann möglich, wenn die Erweiterung von "java.lang.Thread" nicht möglich ist, weil schon eine andere Klasse erweitert wird. Java  erlaubt ja nur die Erweiterung höchstens einer  Klasse. Daher erscheint die Verwendung dieser Schnittstelle als das empfehlenswerte Vorgehen.

Jeder Verlauf hat einen Namen, der aber nicht immer eindeutig nur einem Verlauf zugeordnet sein muß. Dieser Name des Verlaufs ist aber nicht mit dem Namen einer Referenzvariablen zu verwechseln, die ein Referenz auf einen Verlauf enthält. Solch eine Referenzvariable solte aufgelöst oder auf Null gesetzt werden, wenn sie nicht mehr benötigt wird, damit das entsprechende Objekt nicht länger als nötig existiert.

Beispiel.java

public final class Beispiel extends Thread

{ final private long interval;

final private int count;

public Beispiel

( final String n, final long li, final int ic )

{ super(n); interval = li * 1000; count = ic; }

public void run()

{ for( int i = 0; i < count; ++i )

{ try

{ System.out.println( getName() );

sleep(interval); }

catch (Exception x)

{ System.out.println( x ); }}}

public static void main(String[] args)

{ new Beispiel( "Verlauf0", 10, 20 ).start();

new Beispiel( "Verlauf1", 17, 15 ).start();

new Beispiel( "Verlauf2", 22, 11 ).start(); }}

EchoServer

final class EchoServer extends Thread

{ static final int ECHO_PORT = 7;

final java.net.Socket socket;

final EchoServer( final java.net.Socket socket )

throws java.io.IOException

{ this.socket = socket; }

final public void run()

{ java.io.InputStream in = null;

java.io.OutputStream out = null;

try

{ in = socket.getInputStream();

out = socket.getOutputStream();

byte[] b = new byte[ 16 ];

int c;

while(( c = in.read( b ))> 0 )out.write( b, 0, c ); }

catch( IOException e )

{ throw new java.lang.RuntimeException

( "IOException", e ); }

finally

{ try

{ in.close(); out.close(); s.close(); }

catch( IOException e )

{ throw new java.lang.RuntimeException

( "IOException", e ); }}}

final public static void main( final String[] args )

{ ServerSocket serverSocket = null;

try

{ serverSocket = new ServerSocket( 7 );

while( true )( new EchoServer( serverSocket.accept() )).start(); }

catch(Exception e){}

finally

{ try

{ serverSocket.close(); }

catch (IOException i)

{ throw new java.lang.RuntimeException

( "IOException", e ); }}}}

Aussprachehinweise
super ˈsupɚ (sd)
Priorität einstellen
Erzeugen Sie zwei neue Verlaufsobjekt und stellen Sie deren Priorität vor dem Starten auf unterschiedliche Werte. Verwenden Sie dabei die Schnittstelle "Runnable". Die beiden Objekte sollen etwas machen, an dem erkennbar wird, wie sie ihre unterschiedlichen Prioritäten auswirken. Die nötigen Operationen zum Einstellen der Prioritäten finden sich in der Quelle "http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html".
(Die Priorität wird in der Praxis aber wihl selten verwendet.)
Dämonen
Erzeugen und starten Sie einen unbegrenzt lange laufenden Nichtdämonverlauf und lassen sie dann den ersten Hauptverlauf enden. Beobachten Sie, wie der Nichtdämonverlauf weiter läuft. Entnehmen Sie dann der Quelle "http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html", wie ein Dämonverlauf erzeugt wird und ändern Sie Ihr Programm so ab, daß statt des Nichtdämonverlaufs ein Dämonverlauf erzeugt wird. Beobachten Sie dann, wie dieser das Programm nicht mehr blockiert.
Threads

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram720496 stefan_ram:720496 threads Java thread Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz, lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung, Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training, WBT, Net Based Training, NBT, computer based training, CBT, virtual learning environment, virtual university, für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie, Onlineacademie, Onlineakademie, Wissen, Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat, Referate, Hausaufgabe, Hausaufgaben, Tip, Tipp. Tipps und Tricks, Tips und Tricks, Methode, Methoden, Methodik, Funktion, Funktionsweise, Aufbau, Prinzip, Grundlage, Grundlagen, Internetschulung, Unterlage, Unterlagen, Struktur, Frage, Fragen, Antwort, Antworten, Schulunterricht, zum erlernen, was ist das?, wie?, lerne, Onlineausbildung, Onlinelehrgang, Onlinekurs, Onlinebuch, Webbuch, Academy, Fachhochschule, FH, TFH, Hochschule, Universität, Universitaet, Uni, Schule, Berufsschule, Gymnasium, Erste Schritte mit, Dozent, Dozenten, Zusammenfassung, Übersicht, Term, Fachwort, Fachbegriff, Fachbegriffe, Grundbegriff, Grundbegriffe, Lektion, Lektionen, Bedienungsanleitung, Bedienungsanleitungen, Spezialist, Spezialisten, Coaching, Coach, Fachbuch, technologie, Unterschied zwischen, Unterschiede zwischen, lehren, unterrichten, für das Studium, für Studenten, für Studentinnen, für Studierende, für Schüler, für Schülerinnen, Wie kann ich, Wie kann man, Hilfe, selber, erstellen, Erstellung, Beginner, Online-Seminar, Online-Kurs, Online-Schulung, ich, gebrauchsanweisung, gebrauchsanleitung, Bedienungsanweisung, Einweisung, Kurzinfo, Internet-Kurs, Internet-Kurse, Online-Training, Intensiv, Intensivkurs, Vortragsreihe, Präsentation, Grundzüge, Mitschrift, Mitschriften, Verständnis, verstehen, anwenden, Hintergrundwissen, Hintergrund, Hintergründe, content, Funktionsprinzip, Schritt für Schritt; E-Learning; elearning; online learning; Fernlehre, Fernlehrgang, Fernlehrgänge, Referent, Referenten, Fernkurs, Fernkurse, Fernstudium, Fernschule, Fernuniversität, Fernlehrer, Denken, Qualifizierungsmaßnahme, Qualifizierung, Qualifizierungen, Volkshochschulkurs, Volkshochschulkurse, Internet-Learning-Plattform, Online-Learning-Plattform, E-Learning-Plattform, Internetlearning-Plattform, Onlinelearning-Plattform, Elearning-Plattform, jetzt, Kochbuch, einfach erklärt, Kenntnis, Kenntniss, Kenntnisse, deutsche Hilfe, lernen und verstehen; blended learning; courseware, Profi, Profis, professionell, professionelle, professionelles, profesionell, profesionelle, profesionelles, professionel, gekonnt, für Könner, Grundkurs, Leistungskurs, Aufbaukurs, Lehrtext, Lehrtexte, Fachtext, Fachtexte, Ausarbeitung, distance learning, Online Seminar, distance education, Online Tutorium, Online Tutorien, technology-based learning, Computer based learning, CBL, Internet Based learning, IBL, Web based learning, WBL, online-learning, OL, online-training, OT, CAI, Computer Assisted Instruction, CUU, Computerunterstützter Unterricht, Computer-unterstützter Unterricht, Know how, Grundkenntnis, Grundkenntnisse, Kompetenz, Schulungsunterlagen, Insiderwissen, Rat, Lehrerinnen und Lehrer, ABC, Überblick, Arbeitsblatt, Sekundarstufe, Oberstufe, Material, Materialien, Unterrichtsentwurf, Unterrichtsentwürfe, Lerntip, Lerntips, Lerntipp, Lerntipps, ebook, schnell lernen, Lerner, Lernender, Lernende Erwachsenenbildung, Frage und Antwort, Selbststudium, Selbstudium, Umschulung, , kostenlos, kostenlose, kostenloses, kosten los, kosten lose, kosten loses, gratis, free, frei, freie, freies, privat, private, privates, homepage, home-page, home page, website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite, Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel, online, on-line, on line, download downloaden, down load, or, deutsch, deutsche, deutsches, deutscher, Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges, german, germany, and, uebersicht, Uerbersicht, uebersichten, Uebersichten, Übersicht, übersicht, Übersichten, übersichten, Uebersicht, uebersicht, Uebersichten, uebersichten, Info, Infos zu, Information über, ueber, Informationen über, Auskunft, Auskünfte, Auskuenfte, Dienst, PbclevtugFgrsnaEnz, Angebot, Angebote, Anbieter, server, für, fuer, in, an, keyword, keywords, key word, keywords, internet, internets, net, network, net work, networks, net works, web, www, world wide web, Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar, computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon, computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 was ist ein, was ist das, was sind, definiere, definition, define, Inhalt, html, xhtml, free im netz, PDF Text, digital, digitale, binär, binäre, elektronisch, elektronische, fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines, Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen; , Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd720496, slrprddef720496, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/threads-java