0
我正在創建一個包含許多機器的分佈式系統以供學習。我需要在機器之間發送和接收數據,並且我正在使用java.nio創建該網絡。在一臺機器上,我使用一個線程爲serversocketchannel從其他機器接收數據,併爲每個數據包使用我創建的新線程發送它。這意味着一個線程用於接收和多個線程在一臺機器上發送。我應該使用多少個線程來使用java.nio發送和接收數據?
但我面臨一個問題,即一個線程處理接收,許多客戶端將在連接時掛起。 我應該將其更改爲一個線程處理接收和一個線程處理髮送? 謝謝 P/s:我不想使用任何第三方框架。
這是我的情況。我有4臺機器。在某些點上,機器#1需要從其他三個接收10000個字節。你的意思是,在機器#1中我可以使用2個線程,第1個線程可以接受連接並打開流,然後轉移到另一個線程接收字節,然後第1個線程返回以再次聆聽新來的連接?你是這個意思嗎? – hminle
是的,這是常用的方法。通常,您不知道會有多少發件人(例如,使用Web服務器)。您仍然需要在服務器上有多少個「工作人員」線程,因爲網絡中有發送者線程(另外還有一個線程只接受連接並將工作委託給工作人員),以便所有發件人同時得到服務。 –
但是,我正在使用java nio,你怎麼能在java nio中分開兩部分?這是我如何實現我的服務器線程 https://gist.github.com/hminle/0e4a18ad5b3b37ee57348e673c5262fd – hminle