Fragen zur Nebenläufigkeit (Multithreading)
Fragen zur Nebenläufigkeit (Multithreading) holodoctor Tue, 03/21/2017 - 08:25- 2696 views
1 Nebenläufigkeit in einem Javaprogramm (Threading)
1 Nebenläufigkeit in einem Javaprogramm (Threading)Bestimmen Sie welcher Code in welchem Thread ausgeführt wird.
Gegeben sei die Klasse ThreadTest1 die mit ihrer main() Methode als Programm gestartet wird :
public class ThreadTest1 extends Thread{ public void run() { System.out.println("run: " + Thread.currentThread()); } public static void main(String[] args) {
System.out.println("main: Anfang "+ Thread.currentThread());
ThreadTest1 t1= new ThreadTest1();
ThreadTest1 t2= new ThreadTest1();
t1.run();
t1.start();
try {
t1.join();
} catch( InterruptedException i) {
}
System.out.println("main: Ende "+ Thread.currentThread());
}
}
Schreiben die Konsolenausgaben des Programms auf. Gehen Sie davon aus, dass der Aufruf von Thread.currentThread() abhängig vom laufenden Thread eine der drei Zeichenketten ausgibt:
‘main’ wenn das Programm im Hauptthread ist (Anwendungsstart)
‘t1’ wenn es im Thread arbeitet welcher zur Referenz t1 gehört
‘t2’ wenn es im Thread arbeitet welcher zur Referenz t2 gehört
Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).
Niveau | 2 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
- 4746 views
2 Die Methode Thread.join()
2 Die Methode Thread.join()Was bewirkt die Befehlszeile t1.join() im folgenden Programm?
Geben Sie eine kurze Erklärung.
public class ThreadTest1 extends Thread{ public void run() { System.out.println("run: " + Thread.currentThread()); } public static void main(String[] args) {
System.out.println("main: Anfang "+ Thread.currentThread());
ThreadTest1 t1= new ThreadTest1();
ThreadTest1 t2= new ThreadTest1();
t1.run();
t1.start();
try {
t1.join(); // Was bewirkt diese Programmzeile?
} catch( InterruptedException i) {
}
System.out.println("main: Ende "+ Thread.currentThread());
}
}
Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).
Niveau | 2 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Antwort zur Frage 1: Threading
Hinweis: Der Quellcode von Frage 2.16 ist identisch zum Quellcode der Frage 2.17 auf dieser Seite oben.
Das Programm produziert die folgende Konsolenausgabe:
main:Anfang main
run: main
run: t1
main:Ende main
Der Thread t2 wird zwar erzeugt aber nie gestartet.
- 5350 views
3 Prozesse und Threads
3 Prozesse und ThreadsWas ist die Beziehung zwischen einem Thread und einem Prozess?
Was haben Sie gemeinsam ?
Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).
Niveau | 2 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Antwort zur Frage 2: Die Methode Thread.join()
Der Haupthread (main) wartet bis der Thread t1 beendet wird bevor er mit der Abarbeitung fortfährt.
Das Beispiel zur Aufgabe:
public class ThreadTest1 extends Thread{ public void run() { System.out.println("run: " + Thread.currentThread()); } public static void main(String[] args) {
System.out.println("main: Anfang "+ Thread.currentThread());
ThreadTest1 t1= new ThreadTest1();
ThreadTest1 t2= new ThreadTest1();
t1.run();
t1.start();
try {
t1.join(); // Was bewirkt diese Programmzeile?
} catch( InterruptedException i) {
}
System.out.println("main: Ende "+ Thread.currentThread());
}
}
- 4788 views
Antwort zur Frage 2.18: Die Methode Thread.join()
Sollte hierbei nicht noch genauer anhand des Quellcodes erläutert werden, was genau t1.join()bewirkt?
- Log in to post comments
4 Thread.start() und Thread.run()
4 Thread.start() und Thread.run()Die Javaklasse Thread zum nebenläufigen Programmieren besitzt eine Methode start() und eine Methode run().
Was wozu dienen diese beiden Methoden ?
Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).
Niveau | 2 |
Schwierigkeitsgrad | mittel |
Zeit | 4 Minuten |
Antwort zur Frage 3: Prozesse und Threads
Ein Thread ist ein Teil eines Prozess. Er hat einen eigenen Programmzeiger und einen eigenen Stack (Stapel). Er teilt sich den Hauptspeicher mit dem Prozess.
- 4269 views
Rechtschreibfehler
Hallo,
in der Antwort zur Frage 3, muss "ist" anstelle dem englischen "is" stehen :)
Gruß
- Log in to post comments
5 Zustände eines Java-Thread
5 Zustände eines Java-ThreadNennen Sie mindestens 4 der 5 Zustände die ein Java-Thread besitzen kann.
Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).
Niveau | 2 |
Schwierigkeitsgrad | mittel |
Zeit | 4 Minuten |
Antwort zu Frage 4: Thread.start() und Thread.run()
Antwort Methode start() :
- Die Methode start() überführt einen Thread in den Zustand „ready to run“. Dies bedeutet, dass er mit der Ausführung beginnen kann
Antwort Methode run():
- In der Methode run() steht der Code den der Thread ausführen soll. Er wird ausgeführt nachdem der Thread mit der Methode start() gestartet wurde.
- 4110 views
6 Zustände von Threads
6 Zustände von ThreadsDie Klasse Thread besitzt Methoden mit denen der Entwickler die verschiedenen Zustände eines Threads beeinflussen kann. Die Methoden die die Zustandsübergänge bewirken, sind zur Orientierung gegeben. Tragen Sie Namen der vier Zustände in das Diagramm ein!
Die Lösung dieser Aufgabe finden Sie hier im Skript.
Niveau | 2 |
Schwierigkeitsgrad | mittel |
Zeit | 4 Minuten |
Antwort zu Frage 5: Zustände eines Java-Thread
- new: Der Thread wurde mit dem new Operator erzeugt. Er befindet sich im Anfangszustand. Auf seine Daten kann man zugreifen. Er ist noch nicht ablauffähig.
- ready-to-run: Der Thread ist lauffähig und wartet auf eine Prozessorzuweisung
- running: Der Thread hat einen Prozessor und führt das Programm aus
- blocked: Der Thread wartet auf Ressourcen
- dead: Der Thread kann nicht wieder gestartet werden
- 4532 views
7 Schützen mit dem Schlüsselwort "synchronized"
7 Schützen mit dem Schlüsselwort "synchronized"Nennen Sie zwei Javakonstrukte die Sie mit dem Schlüsselwort synchronized schützen können. Was bedeutet „schützen“ im Kontext von Multithreading in Java? Geben Sie eine kurze Erklärung
Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).
Niveau | 2 |
Schwierigkeitsgrad | mittel |
Zeit | 2+2 Minuten |
Antwort zu Frage 6: Zustände von Threads
- 3075 views
Rechtschreibfehler zweiter Satz der Frage
Hallo,
"was deutet .. " sollte vermutlich "was BEdeutet ... ".
Viele Grüße!
- Log in to post comments
8 Kritischer Pfad
8 Kritischer PfadWas ist ein kritischer Pfad/Abschnitt? (Definition)
Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).
Niveau | 2 |
Schwierigkeitsgrad | mittel |
Zeit | 2+2 Minuten |
Antwort zu Frage 7: Schützen mit dem Schlüsselwort "synchronized"
- Methoden
- Blöcke
Schützen bedeutet, dass nur ein Thread einen kritischen Pfad (Programmcode) bearbeiten darf. Hier kann man gewährleisten, dass eine Anzahl von Operationen auf Daten nur von einem Thread ausgeführt werden können.
- 1626 views
9 Was schützt man mit dem Schlüsselwort "synchronize"
9 Was schützt man mit dem Schlüsselwort "synchronize"Welche zwei Arten von kritischen Pfade kann man in Java mit dem Schlüsselwort synchronize schützen?
Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).
Niveau | 2 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Antwort zu Frage 8: Kritischer Pfad
Ein kritischer Abschnitt ist eine Folge von Befehlen, die ein Thread nacheinander vollständig abarbeiten muss, auch wenn er vorübergehend die CPU and einen anderen Thread abgibt. Kein anderer Thread darf einen kritischen Abschnitt betreten, der auf die gleichen Variablen zugreift, solange der erstgenannte Thread mit der Abarbeitung der Befehlsfolge noch nicht fertig ist. (siehe: Goll, Seite 744)
- 1689 views
10 Starten von Threads
10 Starten von ThreadsVervollständigen Sie die unten aufgeführte Klasse so, dass die Ausgabe „Hurra ich bin ein eigener Thread“ in einem anderen Thread als die main() Methode aufgerufen wird.
- Vervollständigen Sie die main() Methode damit sie lauffähig wird
- Implementieren Sie eine neue Methode um den Befehl mit der Ausgabe in einem eigenen Thread aufzurufen:
public class myThread extends Thread { // mit eigener Methode umhüllen System.out.println("Hurra ich bin ein eigener Thread"); } public static void main(String[] args) { } // Ende main Methode } // Ende der Klasse myThread
Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).
Niveau | 2 |
Schwierigkeitsgrad | mittel |
Zeit | 6 Minuten |
Antwort zu Frage 9: Was schützt man mit dem Schlüsselwort "synchronize"
- Methoden
- Blöcke
- 579 views
11 Klassen aus dem Concurrency Package
11 Klassen aus dem Concurrency Package- Welche Klasse aus dem Concurrency-Paket verwenden Sie wenn mit mehreren Threads schreibend auf eine ganze Zahl zugreifen müssen?
- Warum verwenden Sie diese Klasse?
- Wie ist das Laufzeitverhalten dieser Klasse im Vergleich zum Basistyp int?
Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).
Niveau | 2 |
Schwierigkeitsgrad | mittel |
Zeit | 1+2+2 Minuten |
Antwort zu Frage: 10 Starten von Threads
public class myThread extends Thread { public void run() { // mit eigener Methode umhüllen System.out.println("Hurra ich bin ein eigener Thread"); } public static void main(String[] args) { myThread t1 = new myThread(); t1.start(); } } // Ende main Methode } // Ende der Klasse myThread
- 609 views
12 Parallisieren im Concurrency Package ohne Rückgabewerte
12 Parallisieren im Concurrency Package ohne RückgabewerteSie möchten mit dem Concurrency-Paket parallel arbeiten. Sie benötigen keine Rückgabewerte. In welcher Klasse spezialisieren sie am besten und in welcher Methode implementieren Sie Ihren Algorithmus?
Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).
Niveau | 2 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Antwort zu Frage: 11 Klassen aus dem Concurrency Package
- AtomicInteger
- Sie erlaubt das Testen und Schreiben in einer atomaren Operation. Nur ein Thread kann diese Operation gleichzeitig ausführen.
- Sie ist deutlich langsamer, da Sie eine Klasse ist und der Zugriff durch Semaphore bzw. Monitore geschützt werden muss.
- 621 views
13 Klasse ForkJoinPool
13 Klasse ForkJoinPoolWas sind die Vorteile der Klasse ForkJoinPool auf dem Concurrency-Paket? Die Antwort finden Sie weiter unten auf dieser Seite.
Niveau | 2 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Antwort zu Frage: 12 Parallelisieren im Concurrency Package ohne Rückgabewerte
- Klasse: RecursiveAction
- Methode: compute()
Antwort zu Frage: 13 Klasse ForkJoinPool
Es wird ein Pool erzeugt, der so viele Software-Threads hat wie der Rechner Hardware-Threads.
Dadurch werden die Hardware-Threads optimal verwendet und das Betriebssystem hat weniger Stress mit dem Zuordnen der ausführbaren Threads.
- 582 views