Threads und Sockets: Konzepte und Anwendungen

Classified in Informatik

Written at on Deutsch with a size of 4,94 KB.

1 - Beantwortung der Fragen zu Threads:

a. Erkläre, was ein Thread ist.
Ein Thread ist ein Teilprogramm, das unabhängig von anderen Teilen des Programms ausgeführt wird. Es ermöglicht einem Programm, zwei oder mehrere Aufgaben gleichzeitig auszuführen.

b. Nenne und erkläre eine Situation, in der es angebracht wäre, Threads zu verwenden.
In einer Web-Umgebung, in der Bilder, Text und Animationen gleichzeitig geladen werden sollen.

c. Erkläre die Funktion der run-Methode und der start-Methode eines Threads.
Die run-Methode definiert, was der Thread ausführt. Die start-Methode startet die Ausführung des Threads.

d. Was ist die Aufgabe des Thread-Schedulers?
Der Thread-Scheduler entscheidet, welcher Thread als nächstes ausgeführt wird. Er wählt in der Regel den Thread mit der höchsten Priorität.

e. Was ist der Unterschied zwischen kooperativen und präemptiven Modellen bei der Ausführung von Threads?
Ein kooperativer Thread behält die Kontrolle über die CPU, bis er sie freiwillig abgibt. Dies erfordert eine sorgfältige Programmierung, um sicherzustellen, dass Threads die CPU fair teilen. Ein präemptiver Thread kann von der CPU durch das Betriebssystem unterbrochen werden, um anderen Threads die Ausführung zu ermöglichen. Die unterbrochene Aufgabe wird später an der Stelle fortgesetzt, an der sie unterbrochen wurde.

f. Wie wichtig ist die Synchronisation von Threads?
Die Synchronisation ist wichtig, um das Verhalten von Threads zu steuern und Konflikte beim Zugriff auf gemeinsame Objekte zu vermeiden.

g. Nenne und erkläre eine Situation, in der die Synchronisation von Threads angewendet werden könnte.
Beispiel: Zwei Personen greifen gleichzeitig auf dasselbe Bankkonto zu. Ohne Synchronisation kann es zu falschen Kontoständen kommen, wenn eine Person Geld abhebt und die andere gleichzeitig einzahlt.

h. Was ist der Zweck von wait() und notifyAll()?
wait() bewirkt, dass der aktuelle Thread wartet, bis ein anderer Thread das Objekt freigibt. notifyAll() benachrichtigt alle wartenden Threads, dass sich der Zustand des Objekts geändert hat.

i. Was passiert, wenn ein schlafender Thread unterbrochen wird?
Es wird eine InterruptedException ausgelöst. Diese Ausnahme muss in der run-Methode behandelt werden, um den Thread ordnungsgemäß zu beenden.

2 - Arten der Kommunikation in Socket-basierten Anwendungen:

Es gibt zwei Arten von Sockets: Datagram-Sockets und Stream-Sockets. Stream-Sockets sind verbindungsorientiert und verwenden TCP für den Transport. Sie garantieren eine zuverlässige und geordnete Übertragung von Daten. Datagram-Sockets sind nicht verbindungsorientiert und verwenden UDP. Sie sind schneller, aber nicht so zuverlässig, da Pakete verloren gehen können.

3 - Implementierung von Server- und Client-Sockets:

Hier ist eine Aufschlüsselung der Code-Schnipsel und ob sie auf dem Server, dem Client oder beiden verwendet werden:

a) Socket s = new Socket(hostname, numDaPorta); - (X) Client

b) InputStream in = s.getInputStream(); - (X) Server (X) Client

c) OutputStream out = s.getOutputStream(); - (X) Server (X) Client

d) s.close(); - (X) Server (X) Client

e) ServerSocket server = new ServerSocket(8888); - (X) Server

f) Socket s = server.accept(); - (X) Server

4 - Erklärung der Code-Schnipsel:

a) Erstellt einen neuen Socket, der mit dem Hostnamen und dem Port numDaPorta verbunden ist.

b) Ruft den Eingabestream des Sockets ab.

c) Ruft den Ausgabestream des Sockets ab.

d) Beendet die Kommunikation über den Socket.

e) Erstellt einen Server-Socket, der auf Port 8888 lauscht.

f) Akzeptiert eine eingehende Verbindung und erstellt einen neuen Socket für die Kommunikation.

5 - Szenario für die gemeinsame Nutzung von Threads und Sockets:

a. Thread
b. Socket

Szenario: Ein Ticketverkaufssystem. Der Server verwendet Threads, um Anfragen von Clients zu bearbeiten. Jeder Thread ist für die Bearbeitung einer Anfrage zuständig. Der Server ist mit einer Datenbank verbunden, um Informationen über verfügbare Tickets zu erhalten. Der Client sendet Anfragen an den Server, z. B. wie viele Sitze noch verfügbar sind oder welche Plätze im Flugzeug noch frei sind. Die Kommunikation zwischen Client und Server erfolgt über Sockets.

Datenbank-Server-Thread-Socket-Service

Entradas relacionadas: