In Java können Threads auf zwei Hauptarten erstellt werden: durch
Ableitung von der Thread
-Klasse oder durch Implementierung
des Runnable
-Interfaces.
class MyThread extends Thread {
public void run() {
// Code, der im Thread ausgeführt wird
}
}
= new MyThread();
MyThread t1 .start(); t1
class MyRunnable implements Runnable {
public void run() {
// Code, der im Thread ausgeführt wird
}
}
Thread t2 = new Thread(new MyRunnable());
.start(); t2
Synchronisation ist erforderlich, wenn mehrere Threads gemeinsam auf geteilte Ressourcen zugreifen.
Mit dem synchronized
-Block kann der Zugriff auf
gemeinsam genutzte Ressourcen synchronisiert werden.
class SharedResource {
synchronized void sharedMethod() {
// Zugriff auf gemeinsame Ressource
}
}
Die Lock
- und Condition
-Interfaces bieten
eine erweiterte Synchronisationssteuerung.
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
class SharedResourceWithLock {
private final Lock lock = new ReentrantLock();
void sharedMethod() {
.lock();
locktry {
// Zugriff auf gemeinsame Ressource
} finally {
.unlock();
lock}
}
}
Multithreading ist eine Technik, die die Ausführung mehrerer Threads
innerhalb eines Programms ermöglicht. In Java werden dafür verschiedene
Mechanismen und APIs bereitgestellt. Man kann entweder die
Thread
-Klasse erweitern oder das
Runnable
-Interface implementieren, um einen Thread zu
erstellen. Die Synchronisation wird durch
synchronized
-Blöcke und Lock
- und
Condition
-Objekte ermöglicht, um den sicheren Zugriff auf
geteilte Ressourcen zu gewährleisten.