關於nio的java.nio.channels.CancelledKeyException的解決方法

使用nio來進行多線程編程,說是噩夢真的不爲過,沒有使用框架真的很失誤。

最近nio經常會報錯:

java.nio.channels.CancelledKeyException

也看了網上的解決方法,感覺很扯淡,多線程纔會經常出這個問題,給出的解決方法根本不適合多線程,然後自己在一個地方改了一下,

這幾天沒有再出現這個 錯誤了,這個方法沒有經過長時間的測試和論證,只是個人好用了而已。

try {
      if (key.isAcceptable()) {
       // 有客戶端連接請求時
       protocol.handleAccept(key);
      }
     } catch (Exception e) {

        key.cancel();
     }

只是在protocol.handleAccept(key);這一步加上一個catch,捕獲到異常之後,cancel這個key

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章