Asynchrone Programmierung #1 (Multitasking / Multithreading)

  • Der erste Post zu "Asynchrone Programmierung". In diesem Post erkläre ich die Begriffe Multitasking und Multithreading. Des Weiteren werfen wir einen Blick auf die Klasse java.lang.Thread und deren Verwendungsmöglichkeiten.

    Liebe dev-tek Community,


    in diesem Post werde ich die Begriffe Multitasking und Multithreading bezogen auf die Programmierung in Java anreißen. Danach werde ich genauer auf die Klasse java.lang.Thread eingehen und die erlernten Kenntnisse dann direkt an einem Beispiel anwenden.


    __________________________________________________________________________________________________________________________________________________________________________________________________________________________


    Inhalt:

    • Begriffserklärung: Multitasking und Multithreading
    • Wann eignet sich Multithreading?
    • Java.lang.Thread
    • Beispiel

    __________________________________________________________________________________________________________________________________________________________________________________________________________________________


    Multitasking:
    Was ist Multitasking? Multitasking ist das gleichzeitige Abarbeiten mehrerer Anwendungen. Zum Beispiel kann der Entwickler während ein, von ihm geöffnetes, Programm Dateien kopiert zum selben Zeitpunkt ein YouTube-Video im Browser anschauen. Doch dies ist eigentlich nur eine Illusion, denn genau genommen stellt der Prozessor seine Rechenzeit in rasantem Wechsel immer wieder dem einen oder dem anderen Programm zur Verfügung. Das Abarbeiten von Anweisungen eines Programms wird als Prozess oder Task bezeichnet und vom Betriebssystem gesteuert. Dieses reserviert auch einen eigenen Speicherbereich für jeden Prozess.


    Multithreading:
    Ein Prozess wird wiederum in sogenannte Threads untergliedert. Für die Verwaltung der Threads ist nicht das Betriebssystem, sondern die Anwendung selbst zuständig. Jede Anwendung besteht immer aus mindestens einem Thread, der automatisch durch die main-Methode gestartet wird. Threads verfügen über keine eigenen Speicherbereiche.


    __________________________________________________________________________________________________________________________________________________________________________________________________________________________


    Wann eignet sich Multithreading?
    Multithreading eignet sich sehr gut für Abläufe, die sich in einem bestimmten Rhythmus immer wiederholen und automatisch ablaufen, in die der Entwickler aber jederzeit eingreifen kann um den Ablauf zu unterbrechen, oder den Rhythmus zu verändern.


    __________________________________________________________________________________________________________________________________________________________________________________________________________________________


    Java.lang.Thread
    Mittels der Klasse java.lang.Thread ist es dem Entwickler möglich, mehrere (eigene) Threads zu erzeugen, zu stoppen, oder zu beenden.


    Einige Konstruktoren zum Erzeugen eines Threads:


    Die wichtigsten Methoden, der Klasse Java.lang.Thread im Überblick:


    Ein Thread wird durch die Methode mit dem Namen run() und die Implementierung von Runnable lauffähig. Es gibt zwei verschiedene Möglichkeiten für die Erstellung eines Threads:

    • Sie leiten eine eigene Klasse von der Klasse Thread ab
    • Sie implementieren das Interface Runnable


    Methode 1:

    Klasse:


    Anwendung:



    Abbildung 1.2


    Methode 2:

    Klasse:


    Anwendung:



    Abbildung 1.3


    Ein Thread läuft immer so lange, bis die zugehörige run-Methode endet.


    __________________________________________________________________________________________________________________________________________________________________________________________________________________________


    Beispiel:


    In diesem Beispiel verwende ich Methode 1 um einen simplen Countdown mittels Multithreading zu erstellen.


    __________________________________________________________________________________________________________________________________________________________________________________________________________________________


    Ich hoffe, dass ich mit diesem ersten Part der Tutorialreihe ein paar Leuten weiterhelfen konnte.
    Für Fragen, oder Verbesserungen bin ich offen :)


    Mit freundlichen Grüßen
    SevoX :P


    __________________________________________________________________________________________________________________________________________________________________________________________________________________________


    Alle in diesem Thread vorkommenden Abbildungen(Abbildung 1.0, Abbildung 1.1, Abbildung 1.2, Abbildung 1.3) habe ich dem Buch "Programmieren lernen mit Java" von Hans-Peter Habelitz entnommen.

Teilen

Kommentare 1