— Привіт, Аміго!
Давай розбиратися з потоками ґрунтовніше.
Щоб будь-який потік не міг зупиняти та переривати всі потоки поспіль, запровадили поняття «групи потоків». Потік може впливати лише на потоки, які знаходяться у тій самій групі, що й він. ThreadGroup – це клас, який керує групами потоків. Такий підхід дозволяє захистити потоки від небажаної зміни.
Іноді доводиться виконувати код, якому не можна 100% довіряти. Тому зручно помістити всі його потоки в окрему групу та заборонити їм втручатися у роботу основної групи потоків.
Група потоків може містити інші групи. Це дозволяє організувати всі потоки та групи в ієрархічне дерево. У такому дереві кожна група потоків, за винятком початкової, має свою батьківську групу.
У класу ThreadGroup є методи, які дозволяють отримати список всіх його потоків, а також впливати на них / змінювати їх. Коли ми створюємо новий потік і явно не вказуємо групу, він приєднується до тієї ж групи, що й потік-створювач.
Ось тобі кілька методів класу ThreadGroup:
Метод | Опис |
---|---|
|
Повертає ім'я групи |
|
Повертає батьківську групу |
|
Перериває всі потоки у групі |
|
Перевіряє, чи є група демоном |
|
Встановлює групі властивість daemon |
|
Повертає кількість живих потоків у групі та її підгрупах |
|
Повертає кількість живих груп у групі та її підгрупах |
|
Поміщає до масиву всі живі потоки та повертає їх кількість |
|
Повертає максимальний пріоритет для потоків у групі |
|
Дозволяє задати максимальний пріоритет потоків у групі та підгрупах |
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ