Подтвердить что ты не робот

Что такое группы тем в Java?

Мне интересно, почему так мало документации о группах Thread в Интернете? Они все еще используются или являются некоторыми устаревшими понятиями? Может кто-нибудь объяснить:

  • Что это такое.

  • Для чего они используются.

  • Если они используются, то где?

  • Дайте примеры реальных приложений (например, веб-серверы).

4b9b3361

Ответ 1

Они используются как группа потоков. В простом приложении вам нужен только один, но в более сложном сервере приложений имеет смысл иметь один для каждого приложения.

почему так мало документации о группах тем в Интернете?

Я предполагаю, что некоторые считают это довольно простой идеей. Не уверен, чего не хватает.

Используются ли они еще или они являются какой-то устаревшей концепцией?

Я бы хотел, чтобы большинство разработчиков никогда не думали о группах тем. Но я думаю, что они полезны в определенных ситуациях. У нас есть библиотека, где у нас есть пользовательская ThreadGroup для сброса привязки потоков.

Может кто-нибудь объяснить, для чего они используются, если они еще используются, и привести пример.

В основном на серверах приложений каждый сервер имеет собственную коллекцию потоков и может управляться коллективно. Если вы хотите контролировать или выключать приложение, вам необходимо знать, какие потоки приступили к запуску приложения.

Если вы начинаете поток в ThreadGroup, каждый создаваемый Thread также будет в этой группе потоков. Без этой функции вам будет сложно назначать потоки приложениям.

Из @biziclop: Как вы надежно перечисляете потоки в группе?

Вы можете получить размер activeThreads и перечислить, поскольку ThreadGroup блокируется на this (к лучшему или худшему)

synchronized(threadGroup) {
    Thread[] threads = threadGroup.activeCount();
    threadGroup.enumerate(threads);
    // use threads before the lock is released or it could be wrong.
}