Java ServerSocketChannel編程爬坑

對於ServerSocketChannel.register()方法堵塞的處理方法

這裏我將accept作爲一個類,其中包含有selector
按照類的設計,selector是在類初始化的時候通過Selector.open()方法自動獲得的。
我本以爲只需要在ServerSocketChannel.register()的時候,調用accept的方法,獲取已經生成的selector就能實現註冊。
時機情況是對於ServerSocketChannel.register()方法,必須得當場獲取,當場註冊。形如下面的代碼

   ServerSocketChannel serverChannel = ServerSocketChannel.open();
   serverChannel.configureBlocking(false);
   serverChannel.socket().bind(new InetSocketAddress(port), 150);
   selector = Selector.open();
   serverChannel.register(selector, SelectionKey.OP_ACCEPT);

如果使用了類的構造函數獲得selector,而在某一個方法中進行serverSocketChannel的註冊,將導致ServerSocketChannel.register()阻塞

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