Klasa Thread – Java

Definicja pojęcia Klasa Thread – Java
Framework
Podstawy
String metody

Działanie Klasy ‘Thread’


Klasa Thread w Javie jest podstawowym narzędziem do tworzenia i zarządzania wątkami. Umożliwia programistom tworzenie wielowątkowych aplikacji, co pozwala na równoczesne wykonywanie różnych fragmentów kodu. Oto kilka kluczowych aspektów działania klasy Thread:

  • Tworzenie Wątku:

    • Możesz utworzyć nowy wątek, dziedzicząc z klasy Thread i nadpisując metodę run(). Inna opcja to dostarczenie obiektu implementującego interfejs Runnable do konstruktora Thread.

    • Przykład dziedziczenia z Thread:

				
					class MyThread extends Thread {
    public void run() {
        // Kod, który ma być wykonany w nowym wątku
    }
}

MyThread myThread = new MyThread();
myThread.start(); // Uruchomienie nowego wątku

				
			
  • Przykład implementacji Runnable:

				
					class MyRunnable implements Runnable {
    public void run() {
        // Kod, który ma być wykonany w nowym wątku
    }
}

Thread myThread = new Thread(new MyRunnable());
myThread.start(); // Uruchomienie nowego wątku

				
			
  • Uruchamianie Wątku:
    • Wątek nie jest uruchamiany za pomocą metody run(), ale zamiast tego używa się metody start(). Metoda start() inicjuje nowy wątek i wywołuje jego metodę run() w oddzielnym wątku.
    • Wywołanie start() kilka razy dla tego samego obiektu wątku jest niedozwolone. Możesz utworzyć nowy obiekt Thread dla każdego wątku.
  • Metoda run():

    • Metoda run() zawiera kod, który zostanie wykonany w nowym wątku. Jeśli korzystasz z dziedziczenia, to ta metoda musi zostać nadpisana.
    • Metoda run() definiuje zadanie, które wątek ma wykonać. Wątek kończy swoje działanie, gdy metoda run() zostanie zakończona.
  • Stan Wątku:

    • Wątek może znajdować się w różnych stanach, takich jak NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED.
    • Metoda getState() pozwala na sprawdzenie aktualnego stanu wątku.
  • Zarządzanie Wątkiem:

    • Klasa Thread dostarcza różne metody do zarządzania wątkiem, takie jak sleep(long millis) do uśpienia wątku na określony czas, yield() do “oddania” czasu CPU innym wątkom, join() do oczekiwania na zakończenie innego wątku itp.
  • Synchronizacja:

    • Klasa Thread dostarcza mechanizmy synchronizacji, takie jak synchronized do unikania wyścigów (race conditions) między wątkami, oraz wait() i notify() do obsługi komunikacji między wątkami.
  • Interrupts:

    • Wątki mogą być przerwane za pomocą metody interrupt(). Przerwanie wątku powoduje zgłoszenie wyjątku InterruptedException, co umożliwia bezpieczne zakończenie wątku.

Klasa Thread w Javie dostarcza wiele funkcji do zarządzania wątkami. Oto kilka podstawowych metod tej klasy:

  • start(): Rozpoczyna wykonywanie nowego wątku, wywołując jego metodę run(). Metoda run() zawiera kod, który będzie wykonywany w nowym wątku.

				
					Thread thread = new Thread(myRunnable);
thread.start();

				
			
  • sleep(long millis): Powoduje zatrzymanie bieżącego wątku na określoną liczbę milisekund.

				
					try {
    Thread.sleep(1000); // zatrzymaj wątek na 1 sekundę
} catch (InterruptedException e) {
    // obsługa przerwania
}

				
			
  • join(): Czeka, aż wątek, na którym została wywołana metoda, zakończy wykonanie.

				
					Thread thread = new Thread(myRunnable);
thread.start();
try {
    thread.join(); // czekaj, aż wątek zakończy wykonanie
} catch (InterruptedException e) {
    // obsługa przerwania
}

				
			
  • isAlive(): Sprawdza, czy wątek jest nadal aktywny.

				
					if (thread.isAlive()) {
    // wątek jest nadal aktywny
} else {
    // wątek zakończył wykonanie
}

				
			
  • getId(): Zwraca unikalny identyfikator wątku.

				
					long threadId = thread.getId();

				
			
  • interrupt(): Przerywa bieżący wątek. Wątek, który został przerwany, powinien regularnie sprawdzać, czy został przerwany, za pomocą metody isInterrupted().

				
					thread.interrupt();

				
			

To są tylko podstawowe funkcje klasy Thread. Warto zauważyć, że bezpieczne zarządzanie wątkami wymaga uwzględnienia obsługi przerwań (InterruptedException) oraz ostrożności w korzystaniu z metod synchronizacji w celu uniknięcia problemów z dostępem wielowątkowym.

Ważne jest zaznaczenie, że korzystanie z klasy Thread bezpośrednio jest jednym ze starszych podejść do wielowątkowości w Javie, a w nowszych wersjach Javy preferuje się korzystanie z interfejsu Runnable lub z użyciem klas z pakietu java.util.concurrent oraz java.util.concurrent.atomic.

zł30

Pytania rekrutacyjne JavaScript

zł25

Pytania rekrutacyjne SQL

zł30

Pytania rekrutacyjne Spring Framework 

« » page 1 / 2
Scroll to Top