Współbieżność w Javie
III rok Informatyka
Laboratorium 1
- Wątki
- różnica pomiędzy wątkiem i procesem
- kernel threads vs. user threads
- Leightweight Process LWP; modele mieszane
- standard POSIX threads
- Wątki w javie
O wątkach w javie po polsku
- wbudowane w język
- dwa rodzaje implementacji
- Przez dziedziczenie z klasy Thread
Klasa:
class MyThread extends Thread {
. . .
public void run() {
. . .
}
}
Tworzenie obiektu i uruchamianie wątku:
MyThread t = new MyThread();
t.start();
- Przez implementację interfejsu Runnable
Klasa:
class MyThreadR implements Runnable {
. . .
public void run() {
. . .
}
}
Tworzenie i uruchamianie:
MyThreadR r = new MyThreadR();
Thread t = new Thread(r);
t.start();
- metoda run()
- klasa Thread
- konstruktory
public Thread()
public Thread(Runnable target)
public Thread(Runnable target, String name)
public Thread(String name)
public Thread(ThreadGroup group, Runnable target)
public Thread(ThreadGroup group, Runnable target, String name)
public Thread(ThreadGroup group, Runnable target, String name)
- Nadawanie nazw wątkom
public final String getName()
public final void setName(String name)
- Wstrzymywanie i wznawianie
public void start()
public final void stop()
public final void stop(Throwable obj)
public void destroy()
stop rzuca wyjątek ThreadDeath do wątku, żeby umożliwic "sprzątanie".
WAŻNE: blok obsługi wyjątku ThreadDeath musi ponownie rzucać ten
wyjątek!
- Referencja do obiektu aktualnie wykonującego się wątku
public static Thread currentThread()
- Cykl życia wątku, stany wątku
- Szeregowanie
- pojęcia wywłaszczania, podziału czasu
- priorytety
- Szeregowanie wątkow w Javie
- w każdym momencie, spośród kilku wątkow w stanie RUNNABLE
wybierany jest ten o najwyższym priorytecie
- wykonywany wątek może być wywłaszczony, jeśli pojawi się
wątęk o wyższym priorytecie, gotowy do wykonania
- jeśli wiele wątków ma ten sam priorytet, wybierany jest
jeden z nich, wg kolejności (round-robin)
- na niektórych systemach może być zaimplementowany podział
czasu (wątki sa wywłaszczane po upływie kwantu czasu)
- Wyścig
- więcej niż jeden wątek korzysta jednocześnie z zasobu dzielonego, przy
czym co najmniej jeden próbuje go zmienić
- przyczyna niedeterministycznego zachowania się programu
- może prowadzić do trudnych do wykrycia błędów
- pojęcie thread-safety (bezpieczeństwo dla wątków)
- Szkielet programu do wykonania ćwiczenia
balis at wszib.edu.pl
|