class MyThread extends Thread {
public void run() {
// Kod do wykonania w wątku
}
}
Runnable: Jest to interfejs funkcyjny, który definiuje jedną metodę run(). Można użyć go do utworzenia wątku, przekazując obiekt implementujący ten interfejs do konstruktora Thread.
class MyRunnable implements Runnable {
public void run() {
// Kod do wykonania w wątku
}
}
// Tworzenie wątku i przekazanie obiektu Runnable
Thread thread = new Thread(new MyRunnable());
ExecutorService: Jest to interfejs, który zapewnia wygodne API do zarządzania pulą wątków. Umożliwia on uruchamianie zadań asynchronicznie i zarządzanie ich cyklem życia.
ExecutorService executor = Executors.newFixedThreadPool(5);
executor.submit(new MyRunnable());
Interfejsy:
Runnable: Jak wspomniano powyżej, jest to interfejs funkcyjny zawierający jedną metodę run(), która definiuje zadanie, które ma być wykonane w oddzielnym wątku.
Callable: Jest to interfejs funkcyjny, który jest podobny do Runnable, ale zwraca wynik. Metoda call() zwraca wynik typu generycznego.
class MyCallable implements Callable {
public String call() {
// Kod do wykonania w wątku
return "Wynik";
}
}
Interfejsy:
Runnable: Jak wspomniano powyżej, jest to interfejs funkcyjny zawierający jedną metodę run(), która definiuje zadanie, które ma być wykonane w oddzielnym wątku.
Callable: Jest to interfejs funkcyjny, który jest podobny do Runnable, ale zwraca wynik. Metoda call() zwraca wynik typu generycznego.
ExecutorService executor = Executors.newSingleThreadExecutor();
Future future = executor.submit(new MyCallable());
String result = future.get(); // Pobranie wyniku
Lock: Jest to interfejs reprezentujący blokadę, która może być używana do synchronizacji dostępu do współdzielonych zasobów przez wątki.
Lock lock = new ReentrantLock();
lock.lock();
try {
// Krytyczna sekcja
} finally {
lock.unlock();
}
Te klasy i interfejsy stanowią podstawę dla programowania wielowątkowego w Javie, pozwalając programistom na tworzenie aplikacji, które wykorzystują równoległe przetwarzanie i zarządzanie współbieżnością.