簡體   English   中英

Java 1.7 可以管理多少個線程?

[英]How many threads can be managed in Java 1.7?

Java 1.7 能夠管理多少個線程?

在客戶端可以登錄到服務器的服務器/客戶端 Web 程序中。 此登錄是有狀態的。

每個服務器的客戶端 > 3000

“足夠的”。 如果沒有,則使用帶有適當執行器的線程池。 你需要做什么?

沒有 Java 1.7(還沒有)。 在 64 位系統上,您可以達到數以萬計。 在 32 位系統上,您很大程度上受限於堆棧的虛擬地址空間。

關於“c10k”問題的長頁。

理論上? 數千。

在實踐中 - 完全取決於您的系統。 在線程用完之前,您更有可能用完內存。

Java 具有將線程數限制為 Integer.MAX_VALUE 的 API。 (~ 20 億)

然而,您的操作系統/硬件將是真正的限制。 100 到 10K 之間將是您的限制,具體取決於您在做什么。

創建線程通常是為了提高性能。 但是,它們會增加開銷,因此您將達到添加線程會降低性能的程度。 在極少數情況下,兩個線程不如一個線程好。 更多線程對性能的影響取決於您的應用程序、硬件及其使用方式。

注意:如果您有 16 個邏輯核心,則在任何給定時刻最多只能有 16 個線程在運行。

我想上限與可用堆空間有某種關系。 但實際限制更多地與您運行系統的硬件有關,而不是 Java 版本。

每個線程都有自己的堆棧空間。 堆棧存儲在堆之外,但在 JVM 分配的內存中。 因此,最大線程數通常受操作系統可以分配給 JVM 的內存量限制。 在 Windows 上,這對應於 JVM 內存不足之前大約 1000-2000 個最大線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM