Page 137 - 4868
P. 137
135 Ошибка! Стиль не определен.
частині програми:
void myMethod() {
try {
sleep(delay);
} catch (InterruptedException e) {
Thread.currentThread().Interrupt();
}
}
2. Прописати throws InterruptedException в сигнатурі методу та
видалити блок try / catch, і тоді дане переривання може бути перехоплене у
викликаючій частині програми (або в крайньому випадку в методі run()):
void myMethod() throws InterruptedException {
sleep(delay);
}
Запитання для самоперевірки
1. У чому проявляється вбудована підтримка багатопотоковості у мові
Java?
2. Що собою представляє модель циклу подій з опитуванням?
3. У чому полягає перевага багатопотокової моделі в порівнянні із
моделлю на основі циклу подій?
4. В яких станах можуть перебувати потоки у програмі написаній на
мові Java?
5. Яку функціональну роль відіграє головний потік у мові Java?
6. Як призупинити виконання потоку у мові Java на вказану кількість
мілісекунд?
7. Які існують способи створення нового потоку засобами мови Java?
8. Для чого необхідно перевизначати метод run() і яке його
призначення?
9. У якому випадку відбувається переривання потоку у програмі
написаній на мові Java?
10. Яким чином у мові Java можна керувати процесом переривання
потоку?
ЛЕКЦІЯ 19. КЕРУВАННЯ ЖИТТЄВИМ ЦИКЛОМ ТА
СИНХРОНІЗАЦІЯ
19.1. Використання методів isAlive() та join()
Як уже було згадано, найчастіше необхідно, щоб головний потік
завершувався останнім. У попередніх прикладах з методу main()
виконувався виклик методу sleep()із затримкою, достатньою для того, щоб
гарантувати, що всі дочірні потоки завершаться раніше головного. Однак
дане рішення породжує наступне питання: як один потік може знати про