2013-12-21 29 views
-1

我正在編寫一個處理多個連接和請求的系統核心(服務器)。讓我們假設我的服務器連接了一個客戶端並準備好進行通信。我的問題在於,如何讓服務器知道客戶端想要發送一些數據或反向。由於讀取塊直到它接收到數據......所以如果我們不知道另一端的遠程系統期望什麼,那麼如何在對套接字的讀寫操作之間進行管理? 我可以看到使用多線程的方式。任何方式請?在java中高效地處理雙向套接字

+2

您將其命名。多線程。每個套接字一個線程,甚至兩個線程。 – EJP

+0

[非阻塞模式下的NIO](http://rox-xmlrpc.sourceforge.net/niotut/)提供了一種基於事件的方式,您可以在一個線程中處理數千個連接。有基於它的框架,像[netty](http://netty.io/),你可以使用它。 – zapl

回答

1

多線程是解決這個問題的唯一合理的方法(事實上,它是線程需要的絕對經典案例之一) - 您必須爲每個連接創建一個新線程。

您可能希望直接執行此操作,或者您可能希望使用java.util.concurrent(我建議)中的結構 - 例如線程池。一個明智的做法可能是使用fixed thread pool來確保線程數量不會變得太大,然後根據需要產生線程。