Search Header Logo
Tutorium2

Tutorium2

Assessment

Presentation

Computers

KG

Practice Problem

Medium

Created by

Nastassia Lukyanovich

Used 6+ times

FREE Resource

26 Slides • 2 Questions

1

Tutorium 2

​• Sleep und Interrupt • ThreadSpeicher: Heap und Stack • Thread Scheduling Strategien • Race-Conditions

2

​Sleep und Interrupt; wait und notify

​Was ist der Unterschied zwischen sleep und wait?

media

3

​Sleep und Interrupt; wait und notify

​Was ist der Unterschied zwischen sleep und wait?

media

​Thread.sleep()

​wait()

​Ziel

​Kontrolle über Ausführungszeit von einem Thread

​Synchronization zwischen mehreren Threads

​Aufruf auf

​Aktuellen Thread

​Beliebigen Objekt

​Kontext

​Beliebig

​Synchronized Block

​Aufwachen von

​Thread.interrupt(), Zeit ist abgelaufen

​notify()

4

2.1: Thread-Ping-Pong​

Betrachten Sie hierzu die Vorlagen die auf ISIS bereitgestellt sind zu diesem Tutorium. Implementieren Sie zwei Threads, die miteinander (unendlich lang) “Ping-Pong” spielen. Dazu soll ein Thread immer mit “Pong” auf die Nachricht “Ping” eines anderen Threads antworten. Wir betrachten die Vorgaben in tut02/src/main/java, mit den Dateien: PingPong.java und InterruptSleep.java.

5

2.1: Thread-Ping-Pong​

Beachten Sie dazu:

  • Ein Thread gibt immer nur “Ping” aus, der andere immer nur “Pong”.

  • Die Nachricht wird nur ausgegeben, wenn zuvor die Nachricht des anderen Threads ausgegeben wurde.

  • Die Ausgabe wird unendlich lang wiederholt bis das Programm manuell beendet wird.a

6

2.1: Thread-Ping-Pong​

Wie können Sie die Reihenfolge der Ausgaben sicherstellen ohne:

1. vorangegangene Ausgaben auf der Konsole zu überprüfen

2. ohne das Konzept von Monitoren (synchronized) zu benutzen

3. ohne einen dritten Thread, der die anderen beiden Threads steuert

11

2.2: Thread Speicher

Bevor wir den Heap und Stack betrachten, sollten wir zunächst klassifizieren, was eigentlich in diesen Speichern abgelegt werden soll. Beantworten Sie dazu die folgenden Fragen:

• Was sind lokale Variablen? Was sind Instanzvariablen? Was sind Klassenvariablen? Worin unterscheiden diese sich?

• Was sind primitive Variablen? Was sind Referenzvariablen? Warum sprechen wir von einer Referenz?

• Wo wird die Referenz, wo das referenzierte Datum gespeichert?

12

Multiple Select

Question image

Rot markierte Variablen sind...

1

Lokale Variablen

2

Instanzvariablen

3

Klassenvariablen

4

Primitiver Datentyp

5

Komplexer Datentyp

13

Fill in the Blank

Question image

Welches keyword ist dafür verantwortlich, dass pi-Variable eine Klassenvariable ist?

14

2.2: Thread Speicher

media

15

2.2: Thread Speicher

​Variablen

​Stack

​Heap

​Lokale Primitive Variablen

​Primitive Instanzvariablen

​Primitive Klassenvariablen

​Lokale Referenzvariablen

​Referenzvariablen, die Instanzvariablen sind

​Referenzvariablen, die Klassenvariablen sind

16

2.2: Thread Speicher

​Variablen

​Stack

​Heap

​Lokale Primitive Variablen

​+

​Primitive Instanzvariablen

​Primitive Klassenvariablen

​Lokale Referenzvariablen

​Referenzvariablen, die Instanzvariablen sind

​Referenzvariablen, die Klassenvariablen sind

17

2.2: Thread Speicher

​Variablen

​Stack

​Heap

​Lokale Primitive Variablen

​+

​Primitive Instanzvariablen

​+

​Primitive Klassenvariablen

​Lokale Referenzvariablen

​Referenzvariablen, die Instanzvariablen sind

​Referenzvariablen, die Klassenvariablen sind

18

2.2: Thread Speicher

​Variablen

​Stack

​Heap

​Lokale Primitive Variablen

​+

​Primitive Instanzvariablen

​+

​Primitive Klassenvariablen

​+

​Lokale Referenzvariablen

​Referenzvariablen, die Instanzvariablen sind

​Referenzvariablen, die Klassenvariablen sind

19

2.2: Thread Speicher

​Variablen

​Stack

​Heap

​Lokale Primitive Variablen

​+

​Primitive Instanzvariablen

​+

​Primitive Klassenvariablen

​+

​Lokale Referenzvariablen

​+

​Referenzvariablen, die Instanzvariablen sind

​Referenzvariablen, die Klassenvariablen sind

20

2.2: Thread Speicher

​Variablen

​Stack

​Heap

​Lokale Primitive Variablen

​+

​Primitive Instanzvariablen

​+

​Primitive Klassenvariablen

​+

​Lokale Referenzvariablen

​+

​Referenzvariablen, die Instanzvariablen sind

​+

​Referenzvariablen, die Klassenvariablen sind

21

2.2: Thread Speicher

​Variablen

​Stack

​Heap

​Lokale Primitive Variablen

​+

​Primitive Instanzvariablen

​+

​Primitive Klassenvariablen

​+

​Lokale Referenzvariablen

​+

​Referenzvariablen, die Instanzvariablen sind

​+

​Referenzvariablen, die Klassenvariablen sind

​+

22

2.3: Thread Scheduling

media

​Wofür braucht man einen Scheduler?

23

2.3: Thread Scheduling

​Strategie

​Erklärung

​Prioritätsscheduling

​Präemptives Scheduling

​FiFo

​Time-slicing

24

2.3: Thread Scheduling

media

25

2.4: Race Conditions

​Welche Race Conditions kennt ihr?

media

26

2.4: Race Conditions

media

27

2.4: Race Conditions

​Danke für die Aufmerksamkeit!

28

2.4: Race Conditions

media

Tutorium 2

​• Sleep und Interrupt • ThreadSpeicher: Heap und Stack • Thread Scheduling Strategien • Race-Conditions

Show answer

Auto Play

Slide 1 / 28

SLIDE