Процеси, потоки та пріоритети

Перш ніж приступити до розмови про багатопоточності, слід уточнити деякі терміни.

Зазвичай в будь-який багатопотокової операційній системі виділяють такі об'єкти, як процеси і потоки. Між ними існує велика різниця, яку слід чітко собі уявляти.







Для кожного процесу операційна система створює один головний потік (thread), який є потоком виконуються по черзі команд центрального процесора. При необхідності головний потік може створювати інші потоки, користуючись для цього програмним інтерфейсом операційної системи.

Пріоритети потоків в додатках Java

Якщо процес створив кілька потоків, то всі вони виконуються паралельно, причому час центрального процесора (або декількох центральних процесорів в мультипроцесорних системах) розподіляється між цими потоками.

Розподілом часу центрального процесора займається спеціальний модуль операційної системи - планувальник. Планувальник по черзі передає управління окремим потокам, так що навіть в однопроцессорной системі створюється повна ілюзія паралельної роботи запущених потоків.







Розподіл часу виконується по перериваннях системного таймера. Тому кожному потоку дається певний інтервал часу, протягом якого він перебуває в активному стані.

Зауважимо, що розподіл часу виконується для потоків, а не для процесів. Потоки, створені різними процесами, конкурують між собою за отримання процесорного часу.

Яким саме чином?

Програми Java можуть вказувати три значення для пріоритетів потоків. Це NORM_PRIORITY, MAX_PRIORITY і MIN_PRIORITY.

За замовчуванням знову створений потік має нормальний пріоритет NORM_PRIORITY. Якщо інші потоки в системі мають той же самий пріоритет, то всі потоки користуються процесорним часу на рівних правах.

При необхідності ви можете збільшувати пріоритет окремих потоків, визначивши для них значення пріоритету, відповідно, MAX_PRIORITY або MIN_PRIORITY. Потоки з підвищеним пріоритетом виконуються в першу чергу, а зі зниженим - тільки за відсутності готових до виконання потоків, що мають нормальний або підвищений пріоритет.







Схожі статті