Wątki w Java

W programowaniu, wątki umożliwiają równoległe wykonywanie zadań, co może znacząco przyspieszyć działanie programu, szczególnie przy zadaniach wymagających intensywnych obliczeń lub przy oczekiwaniu na zewnętrzne zasoby. Java oferuje wszechstronne wsparcie dla programowania wielowątkowego, co pozwala tworzyć wydajne i responsywne aplikacje.

Przykład: Symulator stacji pogodowej

Załóżmy, że chcemy stworzyć prosty symulator stacji pogodowej, który w równoległych wątkach zbiera dane o temperaturze, wilgotności i ciśnieniu atmosferycznym. Każdy z tych pomiarów odbywa się w osobnym wątku.

Klasa TemperatureSensor
// Klasa symulująca czujnik temperatury
public class TemperatureSensor implements Runnable {
    private final String sensorName;

    // Konstruktor czujnika temperatury
    public TemperatureSensor(String sensorName) {
        this.sensorName = sensorName;
    }

    @Override
    public void run() {
        // Symulacja odczytu temperatury
        try {
            System.out.println(sensorName 
                      + " odczytuje temperaturę.");
            Thread.sleep(1000); // Symulacja czasu odczytu
            System.out.println(sensorName 
                      + " zakończył odczyt.");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
Klasa HumiditySensor
// Klasa symulująca czujnik wilgotności
public class HumiditySensor implements Runnable {
    private final String sensorName;

    // Konstruktor czujnika wilgotności
    public HumiditySensor(String sensorName) {
        this.sensorName = sensorName;
    }

    @Override
    public void run() {
        // Symulacja odczytu wilgotności
        try {
            System.out.println(sensorName 
                   + " odczytuje wilgotność.");
            Thread.sleep(1500); // Symulacja czasu odczytu
            System.out.println(sensorName 
                   + " zakończył odczyt.");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
Klasa PressureSensor
// Klasa symulująca czujnik ciśnienia
public class PressureSensor implements Runnable {
    private final String sensorName;

    // Konstruktor czujnika ciśnienia
    public PressureSensor(String sensorName) {
        this.sensorName = sensorName;
    }

    @Override
    public void run() {
        // Symulacja odczytu ciśnienia
        try {
            System.out.println(sensorName 
                    + " odczytuje ciśnienie.");
            Thread.sleep(1200); // Symulacja czasu odczytu
            System.out.println(sensorName 
                    + " zakończył odczyt.");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
Uruchamianie symulatora stacji pogodowej
public class WeatherStationSimulator {
    public static void main(String[] args) {
        // Tworzenie wątków dla każdego czujnika
        Thread temperatureThread = 
            new Thread(new TemperatureSensor("Czujnik temperatury"));
        Thread humidityThread = 
            new Thread(new HumiditySensor("Czujnik wilgotności"));
        Thread pressureThread = 
            new Thread(new PressureSensor("Czujnik ciśnienia"));

        // Uruchamianie wątków
        temperatureThread.start();
        humidityThread.start();
        pressureThread.start();
    }
}

Podsumowanie

W tej lekcji omówiliśmy podstawy programowania wielowątkowego w Java na przykładzie symulatora stacji pogodowej. Używając interfejsu Runnable i klasy Thread, stworzyliśmy symulację, w której różne pomiary (temperatura, wilgotność, ciśnienie) są realizowane równolegle w oddzielnych wątkach.

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