什么是Java中的线程组?

时间:2016-03-22 14:59:36

标签: java multithreading

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

  • 它们是什么。

  • 它们的用途。

  • 如果他们平静使用,在哪里?

  • 提供一些真实的应用程序示例(可能是Web服务器)。

1 个答案:

答案 0 :(得分:8)

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

  

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

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

  

它们是否仍在使用,或者它们是陈旧的概念?

我认为大多数开发人员都不会想到线程组。但我认为它们在某些情况下很有用。我们有一个库,我们有一个自定义ThreadGroup来重置线程关联。

  

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

主要在应用程序服务器中,每个服务器都有自己的线程集合,可以集中管理。如果要监视或关闭应用程序,则需要知道应用程序启动的线程。

如果你开始一个ThreadGroup中的一个线程,它创建的每个线程也将在该线程组中。如果没有此功能,您将很难为应用程序分配线程。

  

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

您可以获取activeThreads的大小并枚举为this上的ThreadGroup锁定(无论好坏)

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