W programowaniu wielowątkowym w Javie, wątki to podstawowe jednostki wykonawcze, które pozwalają na równoległe wykonywanie kodu. Użycie wątków może znacznie przyspieszyć wykonanie programu, szczególnie kiedy musimy obsługiwać zadania, które można wykonywać niezależnie od siebie. W tej lekcji przyjrzymy się, jak tworzyć i zarządzać wątkami w Javie na przykładzie konkretnego kodu.
Przykład użycia wątków w Javie
Opis programu
Program poniżej demonstruje tworzenie i uruchamianie dwóch wątków w Javie. Używamy klasy Thread
oraz interfejsu Runnable
, aby zdefiniować zadania, które mają być wykonane przez wątki. Zobaczmy, jak to działa w praktyce:
// Klasa reprezentująca zadanie do wykonania
class Task implements Runnable {
private String taskName; // Nazwa zadania
// Konstruktor z nazwą zadania
public Task(String taskName) {
this.taskName = taskName;
}
// Metoda run, która będzie wykonana przez wątek
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(taskName + " wykonuje krok " + i);
try {
// Usypiamy wątek na 1 sekundę
Thread.sleep(1000);
} catch (InterruptedException e) {
// Obsługa wyjątku przerwania wątku
System.out.println(taskName + " został przerwany.");
return;
}
}
}
}
// Klasa główna z metodą main
public class ThreadExample {
public static void main(String[] args) {
// Tworzenie zadania dla wątków
Task task1 = new Task("Wątek 1");
Task task2 = new Task("Wątek 2");
// Tworzenie wątków z zadaniami
Thread thread1 = new Thread(task1);
Thread thread2 = new Thread(task2);
// Uruchomienie wątków
thread1.start();
thread2.start();
// Czekamy na zakończenie obu wątków
try {
thread1.join();
thread2.join();
} catch (InterruptedException e) {
// Obsługa przerwania głównego wątku
System.out.println("Główny wątek został przerwany.");
}
// Informacja o zakończeniu pracy wątków
System.out.println("Oba wątki zakończyły działanie.");
}
}
Komentarze do kodu
- Definicja zadania (
Runnable
): Definiujemy klasęTask
, która implementuje interfejsRunnable
. Interfejs ten wymaga implementacji metodyrun()
, która zawiera kod, który ma być wykonany przez wątek. - Tworzenie i uruchamianie wątków: W metodzie
main
tworzymy dwie instancje klasyTask
, a następnie przekazujemy te zadania do nowych wątków za pomocą konstruktoraThread
. Uruchamiamy wątki za pomocą metodystart()
. - Synchronizacja wątków: Używamy metody
join()
, aby poczekać, aż wątki zakończą swoje działanie. Metodajoin()
powoduje, że wątek, który ją wywołał (w tym przypadku główny wątek), będzie czekał na zakończenie wątku, na którym metoda została wywołana.
Podsumowanie
Wątki w Javie umożliwiają równoczesne wykonywanie kodu, co jest szczególnie przydatne w aplikacjach wymagających równoległej obróbki danych lub asynchronicznej obsługi zadań. Kluczową zaletą programowania wielowątkowego jest zwiększenie wydajności aplikacji, ale niesie to także dodatkowe wyzwania takie jak synchronizacja wątków czy zarządzanie ich życiem.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.