Współbieżność w programowaniu to zdolność programu do wykonywania wielu części kodu jednocześnie, co pozwala na lepsze zarządzanie zasobami i szybsze przetwarzanie. W Javie współbieżność jest realizowana głównie za pomocą wątków, które są lekkimi procesami wykonującymi się równolegle w ramach większego programu.
Przykład kodu z komentarzami
Poniżej znajduje się przykład, w którym tworzone są dwa wątki w Javie. Każdy wątek wykonuje prostą czynność: jeden wątek zlicza w dół, a drugi zlicza w górę. Przykład pokazuje, jak można zorganizować kod, aby wątki pracowały równolegle, co ilustruje podstawy współbieżności.
public class ConcurrencyExample {
public static void main(String[] args) {
// Tworzenie instancji zadania dla wątków
CountDownTask countDown = new CountDownTask();
CountUpTask countUp = new CountUpTask();
// Tworzenie wątków z określonymi zadaniami
Thread threadOne = new Thread(countDown);
Thread threadTwo = new Thread(countUp);
// Uruchamianie wątków
threadOne.start();
threadTwo.start();
}
}
// Klasa definiująca zadanie odliczania w dół
class CountDownTask implements Runnable {
@Override
public void run() {
// Pętla odliczająca od 10 do 1
for (int i = 10; i > 0; i--) {
System.out.println("Count Down: " + i);
try {
// Uśpienie wątku na 500 ms
Thread.sleep(500);
} catch (InterruptedException e) {
System.out.println("Thread interrupted");
}
}
}
}
// Klasa definiująca zadanie odliczania w górę
class CountUpTask implements Runnable {
@Override
public void run() {
// Pętla odliczająca od 1 do 10
for (int i = 1; i <= 10; i++) {
System.out.println("Count Up: " + i);
try {
// Uśpienie wątku na 500 ms
Thread.sleep(500);
} catch (InterruptedException e) {
System.out.println("Thread interrupted");
}
}
}
}
Podsumowanie
W powyższym przykładzie zaprezentowano podstawy tworzenia i uruchamiania wątków w Javie, co jest kluczowym aspektem współbieżności. Wykorzystanie wątków umożliwia programowi wykonanie wielu zadań jednocześnie, co może przyczynić się do zwiększenia efektywności i responsywności aplikacji. Współbieżność jest potężnym narzędziem, ale wymaga odpowiedniej wiedzy i ostrożności, aby uniknąć problemów takich jak warunki wyścigu, zakleszczenia czy inne problemy z synchronizacją.
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.