2016-03-22 34 views
13

我想知道爲什麼在互聯網上有關於線程組的文檔很少? 他們仍然在使用,或者他們是一些陳舊的概念? 可以解釋一下:什麼是Java中的線程組?

  • 它們是什麼。

  • 他們用於什麼。

  • 如果它們被停用,在哪裏?

  • 給一些真正的應用程序示例(Web服務器,也許)。

+1

簡短的回答是:[錯誤](http://stackoverflow.com /問題/ 3265640 /爲什麼 - 線程組,是幸福 - 批評)。 – biziclop

+0

如果您覺得引用的答案可以回答您的問題,我可以將您的問題作爲重複來解決。 – biziclop

+1

@biziclop問題是要求更具體的問題和問題要求理解它,然而這個問題是關於解釋我自己不明白的基礎知識。此外不明白爲什麼沒有人談論它:D – Adelin

回答

8

它們被用作一組線程。在一個簡單的應用程序中,您只需要一個應用程序服務器,但在更復雜的應用程序服務器中,每個應用程序都有一個應用程序是有意義的

爲什麼在互聯網上有關於線程組的文檔很少?

我想有些人認爲這是一個非常簡單的想法。不知道缺少什麼。

他們還在使用或他們是一些陳舊的概念?

我想大多數開發者永遠不會想到線程組。但我認爲它們在某些情況下很有用。我們有一個庫,我們有一個自定義ThreadGroup用於重置線程關聯。

有人可以解釋,他們是什麼,如果仍然使用,並給出一個例子。

大部分在應用程序服務器中,每個服務器都有它自己的線程集合,並且可以集中管理。如果您想監視或關閉應用程序,則需要知道應用程序啓動了哪些線程。

如果從一個ThreadGroup中的線程開始,它創建的每個線程也將在該線程組中。沒有這個功能,你就很難分配線程給應用程序。

從@biziclop:你如何可靠地枚舉組中的線程?

你可以得到activeThreads的大小和枚舉的線程組鎖在this(或好或壞)

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

這很好,但你可以指點一些文章,而不是Java 101,或者例子如何使用它們以及它們對於什麼有用? – Adelin

+2

@Adelin我會讀Javadoc的線程組,也可能是ThreadGroup和Thread的源代碼。你特別懷疑什麼? –

+0

@Adelin正如我所說的,大多數Java開發人員從來沒有考慮過它,所以它不是Java 101類。 –