NIO和TCP使許多連接成爲一對。由於需要爲每個新客戶端打開一個新連接,因此每個客戶端通常都需要自己的線程來阻止I/O操作。 NIO通過允許數據在可能時被讀取來解決該問題,而不是在可用之前阻塞。但是UDP呢?在NIO中使用UDP有什麼意義?
我的意思是,無連接的UDP沒有與之相關的TCP阻塞性質,因爲協議設計的方式(基本上是發送它並將其忘掉)。如果我決定發送一些數據到某個地址,那麼它會這樣做,沒有延遲(在服務器端)。同樣,如果我想讀取數據,我只能接收來自不同來源的單個數據包。我不需要使用許多線程來處理它們中的每一個,就可以有很多連接到很多地方。
那麼,NIO和選擇器如何增強UDP?更具體地說,何時會更喜歡使用UDP與NIO而不是ol'java.net
包?
不是你的問題的答案 - 但你應該首先檢查NIO是否更快或更好,即使是TCP - http://mailinator.blogspot.in/2008/02/kill-myth-please-nio-is-not -faster-than.html http://paultyma.blogspot.in/2008/03/writing-java-multithreaded-servers.html – user93353