Java 中的线程组是什么?

2022-09-04 03:48:15

我想知道为什么互联网上关于线程组的文档如此之少?它们是否仍在使用,或者它们是一些过时的概念?有人可以解释一下:

  • 它们是什么。

  • 它们的用途。

  • 如果它们仍然使用,在哪里?

  • 给出一些真实的应用程序示例(也许是Web服务器)。


答案 1

它们用作一组线程。在一个简单的应用程序中,您只需要一个,但在更复杂的应用程序服务器中,为每个应用程序设置一个是有意义的。

为什么互联网上关于线程组的文档如此之少?

我想有些人认为这是一个非常简单的想法。不知道它缺少什么。

它们是否仍在使用,或者它们是一些过时的概念?

我想大多数开发人员从来不考虑线程组。但我认为它们在某些情况下是有用的。我们有一个库,其中有一个自定义的线程组,用于重置线程关联。

有人可以解释一下,如果仍然使用,它们是什么用途,并举个例子。

大多数情况下,在应用程序服务器中,每个服务器都有自己的线程集合,并且可以集中管理。如果要监视或关闭应用程序,则需要知道应用程序启动了哪些线程。

如果在 ThreadGroup 中启动一个线程,则它创建的每个 Thread 也将在该线程组中。如果没有此功能,您将很难将线程分配给应用程序。

来自 @biziclop: 如何可靠地枚举组中的线程?

您可以获取活动线程的大小,并在 ThreadGroup 锁定时枚举(无论好坏)this

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

答案 2