使用nio來進行多線程編程,說是噩夢真的不爲過,沒有使用框架真的很失誤。
最近nio經常會報錯:
java.nio.channels.CancelledKeyException
也看了網上的解決方法,感覺很扯淡,多線程纔會經常出這個問題,給出的解決方法根本不適合多線程,然後自己在一個地方改了一下,
這幾天沒有再出現這個 錯誤了,這個方法沒有經過長時間的測試和論證,只是個人好用了而已。
try {
if (key.isAcceptable()) {
// 有客戶端連接請求時
protocol.handleAccept(key);
}
} catch (Exception e) {
key.cancel();
}
只是在protocol.handleAccept(key);這一步加上一個catch,捕獲到異常之後,cancel這個key。