我正在寫一個Java應用程序,將實例化一個類的對象來表示對我的應用程序的另一端連接,並與外部系統註冊客戶。爪哇 - 在多線程多選擇的非阻塞套接字
每個客戶對象在其內具有兩個嵌套類,代表前端和後端。前端類將連續地從實際的客戶端接收數據,和發送指示和數據傳送到後端類,這將需要從前端該數據,並將其在使用適當的格式和協議發送到外部系統該系統需要。
在設計上,我們希望有一個客戶對象的每個實例是一個線程。然後,在每個線程中自然會有兩個套接字[EDIT],每個[/ EDIT]有自己的NIO通道,一個客戶端,一個系統端分別駐留在前端和後端。但是,現在這引入了對非阻塞套接字的需求。我一直在閱讀教程here,它解釋瞭如何在主線程中安全地使用Selector來處理所有具有連接的線程。
但是,我需要的是多個選擇 - 在自己的線程每一個操作。從閱讀前面提到的教程,我瞭解到Selector中的鍵集不是線程安全的。這是否意味着,如果我試圖給它們各自的套接字和通道對,單獨的Selectors在自己的reponctive線程中實例化可能會產生衝突的關鍵字?將選擇器移動到主線程是一種微小的可能性,但基於我所給出的軟件要求,這是遠遠不夠理想的。感謝您的幫助。
恐怕我對你的回答感到困惑,你是說頻道本身就是一個線索,頻道是它自己的線索,還是我應該單獨設置和輪詢頻道線程從客戶端? 我可能沒有在我的原始文章中清楚,每個客戶端對象將有兩個套接字和兩個通道在應用程序的任何一方進行通信。熟悉非阻塞和非阻塞的概念,並且特別選擇了非阻塞,因爲要求多路複用通信。 – 2009-07-11 14:37:57