在構建java套接字服務器時,我一直在閱讀過去幾天關於io和nio之間的區別。對於我的使用,我需要一個可以運行大量連接和離子的服務器來應對這個伎倆。 我唯一的擔心是,它實施起來要慢一些,而且難以實現,而不是爲每個連接運行一個線程。所以我想爲什麼不使用相同的線程和java.nio的邏輯,並建立一個服務器有一個線程,檢查所有打開的連接,當有新事件時,它會打開一個新的線程來處理它。我以這種方式認爲我享受這兩個世界......你有什麼建議?爲套接字服務器實現我自己的java.nio
回答
NIO幾乎完全依賴於JNI,所以如果你想再次實現它,你實際上必須編寫大量的C/++和OS API接口代碼。
我認爲現有的Java實現已經相當不錯了。例如,Selector類將系統調用包裝爲等待多個文件描述符。幾乎沒有什麼可以提高效率的。
我建議你不理解NIO的要點,即只使用一個線程。這當然是複雜的,並且在1000名客戶以下是否有任何需求可能是有爭議的,可能是10,000,甚至可能是100,000。我會用java.net實現你的服務器,讓它運行併爲階段2保存java.nio,如果你到達那裏並證明你確實需要它。
編輯:我肯定會忘記這個滾動自己的概念。你大大低估了這項任務(Sun 1.4.0,1.4.1,1.4.2在它確實正常工作之前),而你似乎正在瞄準兩全其美。因爲沒有更多的東西,所以你不能比Sun用java.nio做更多的事情。可以說少一點;-)
首先它是一個好主意。第二我可以在一個線程中完成所有操作。是不是那個妞呢?爲每個tesk運行一個新線程並在之後進行cloae? –
@AsafNevo您需要爲java.net每個連接創建一個單獨的線程。 – EJP
- 1. 在J2ee服務器中實現服務器套接字
- 2. 我應該實現自己的TCP/IP套接字超時嗎?
- 3. 創建我自己的YAJSW Java服務包裝器的實現?
- 4. 我自己的服務器
- 5. liferay-6.1 - 實現自己的服務
- 6. 如何實現客戶端 - 服務器架構的服務器TCP套接字
- 7. 在我的機器上實現我自己的電子郵件服務器
- 8. 像Tcl「套接字服務器」套接字服務器框架
- 9. 哪個更適合用於基本服務器/客戶端套接字實現,「套接字」或「套接字服務器」的服務器?
- 10. Android的TCP套接字客戶端/服務器實現
- 11. 使用C中的BSD套接字實現FTP服務器
- 12. 用於NodeJS的Web套接字服務器端實現
- 13. 如何實現我自己的Cirrus(以前稱爲Stratus)服務器?
- 14. 爲WebRTC應用程序實現我們自己的STUN/TURN服務器
- 15. 如何在服務器端C#上實現套接字?
- 16. java客戶端服務器套接字編程實現問題
- 17. 首選套接字策略文件服務器實現?
- 18. 超高性能套接字服務器 - 實現細節
- 19. 實現使用Java套接字服務器基本
- 20. 如何在Python中實現非阻塞套接字服務器
- 21. Web服務器套接字
- 22. 套接字服務器
- 23. Android - 服務器套接字
- 24. PHP套接字服務器
- 25. Java服務器套接字
- 26. Silverlight服務器套接字
- 27. 實現我自己的DBGrid
- 28. 實現web套接字服務器在Azure雲服務Web角色
- 29. android ACRA 4.8崩潰報告實現自己的服務器
- 30. VMC用我自己的服務器
有像netty和灰熊這樣的多個高性能nio庫,它們應該適合你。 – Bill