Page 162 - 6571
P. 162
Однопотокові системи використовують підхід, на основі
циклу подій з опитуванням. У даній моделі єдиний потік
керування виконується в нескінченному циклі, опитуючи єдину
чергу подій. Як тільки потік керування сигналізує про те, що
мережевий файл готовий до читання, цикл подій передає
керування відповідному обробнику подій. У програмі не
виконуються інші дії до того часу, поки обробник подій не
поверне керування. Таке рішення може призвести до того, що
одна частина програми буде домінувати над іншою і заблокує
обробку будь-яких інших подій. Якщо потік у однопотоковому
оточенні блокується (тобто припиняє виконання) з причини
очікування деякого ресурсу, то виконання всієї програми
призупиняється.
Модель потоків і її підтримка в мові Java є програмним
механізмом, що спрощує одночасне виконання декількох
операцій в межах однієї програми. Процесор періодично
втручається в події, виділяючи кожному потоку деякий проміжок
часу на його виконання. Зі сторони потоку все виглядає так,
неначе процесор використовується в монопольному режимі, але
насправді час процесора розділяється між усіма існуючими в
програмі потоками (виняток становить ситуація, коли програма
дійсно виконується на багатопроцесорному комп’ютері).
Потоки можуть перебувати в декількох станах: потік може
виконуватися; він може бути готовий до виконання, як тільки
отримає час центрального процесора; виконуваний потік може
бути тимчасово призупинений; виконання призупиненого потоку
може бути поновлено; потік може бути заблокований під час
очікування певного ресурсу; у будь-який момент часу потік може
бути перерваний; одного разу перерваний потік більше не може
бути відновлений.
Під час запуску Java-програми, негайно починає
виконуватися її головний потік (main thread). Головний потік є
важливим з двох причин: 1) від даного потоку породжуються всі
«дочірні» потоки; 2) часто він повинен бути останнім потоком,
що завершує виконання програми, оскільки може виконувати
різні завершальні дії.
Незважаючи на те, що головний потік створюється
автоматично при запуску програми, ним можна керувати через
161