2015-12-14 69 views
4

我想知道選擇器最多可以處理多少個通道?我熟悉常見的I/O算法,但我不知道NIO是否可以使用選擇器來處理(例如)10000個套接字。應該使用多個線程並在每個線程中都有一個選擇器來處理特定數量的套接字?選擇器可以選擇的最大通道數是多少?

雖然我發現this,但沒有解決這個具體問題。

+1

第二個對你所關聯問題的回答似乎回答了這個問題:如果你使用的連接少於10,000個,問題可能在其他地方。如果不知道有關硬件的硬件以及使用資源的其他因素,則可能無法定義特定的最大值。 –

+0

@NathanielFord第二個迴應實際上只是來源不明,現在因不利評論而被刪除。這與被問到的問題也沒有關係。 – EJP

回答

4

除套接字描述符的數目外,沒有限制。一些平臺有潛在的限制,但是NIO可以通過多個操作系統選擇器在其周圍工作,每個Selector.

對於Java 1.4.1有一個限制,但它早已消失。

應該使用多個線程並在每個線程中都有一個選擇器來處理特定數量的套接字?

這是可能的,但我真的不明白爲什麼你應該。也許同行可能以這種方式獲得更多的常規服務,這取決於您的代碼與每個請求的關係。