NIO改寫服務端
- 性能分析篇已經寫到,阻塞模式若客戶端數量達到上萬十萬百萬,服務器的cpu、內存和線程的壓力非常大,必須要進行性能改進。方案便是將服務端改寫成非阻塞模式(NIO)
- 將等待連接的accept改寫爲ServerSocketChannel的Socket註冊方法
- 讀寫線程也分別改寫爲ServerSocketChannel的Socket註冊方法
相比前邊案例改寫的類
- TCPServer
- ClientHandler
出現的問題
- 服務端接收客戶端發送的內容時,第一條是正常的,此後總是出現接收一條空數據的情況,不解(看運行實例)
- IDEA的debug和run的結果出現差異的情況。debug是正常的,run會出現上邊的問題
- 服務端接收客戶端的內容時,會在結尾加上回車換行符(\n\r)
運行實例
客戶端
服務端
代碼
註釋也在裏邊了
鏈接: 百度網盤 提取碼: ddjq