Jakie są właściwości wątku w Javie?

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

  1. Definicja zadania (Runnable): Definiujemy klasę Task, która implementuje interfejs Runnable. Interfejs ten wymaga implementacji metody run(), która zawiera kod, który ma być wykonany przez wątek.
  2. Tworzenie i uruchamianie wątków: W metodzie main tworzymy dwie instancje klasy Task, a następnie przekazujemy te zadania do nowych wątków za pomocą konstruktora Thread. Uruchamiamy wątki za pomocą metody start().
  3. Synchronizacja wątków: Używamy metody join(), aby poczekać, aż wątki zakończą swoje działanie. Metoda join() 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.

Scroll to Top