隨筆-57  評論-202  文章-17  trackbacks-0
                從對象池中獲取的實(shí)例,因?yàn)椴⒉磺宄揷hannel是否已經(jīng)設(shè)置成正確的狀態(tài),所以在使用時(shí)最好重新設(shè)置一遍。有以下幾點(diǎn)需要注意:
                1.在使用阻塞IO時(shí),需要把該channel設(shè)置成阻塞的,即需要調(diào)用SocketChannel.configureBlocking(true);
                2.在使用非阻塞IO時(shí),需要把該channel設(shè)置成非阻塞的,即需要調(diào)用SocketChannel.configureBlocking(false);
                3.如果該channel注冊了selector,那么在返回該實(shí)例到對象池中,需要把注冊的selector清除,即需要調(diào)用Selector的close方法。

                下面是一段應(yīng)用場景的例子:


                  
          // 把命令輸出
                  channel.configureBlocking(true);
                  PrintWriter writer 
          = new PrintWriter(channel.socket().getOutputStream(), false);
                  writer.write(command.endsWith(
          "\n"? command : command + "\n");
                  writer.flush();

                  channel.configureBlocking(
          false);

                  
          // 創(chuàng)建Selector
                  Selector selector = Selector.open();
                  
          // 向Selector注冊我們需要的READ事件
                  SelectionKey skey = channel.register(selector, SelectionKey.OP_READ);

                  boolean stop 
          = false;
                  
          int n = 0;
                  
          int read = 0;
                  ByteBuffer buffer 
          = ByteBuffer.allocate(1024);

                  
          // 輪詢
                  while (!stop) {
                    
          // 獲取Selector返回的時(shí)間值
                    n = selector.select();

                    
          // 當(dāng)傳回的值大于0事,讀事件發(fā)生了
                    if (n > 0{
                   
          // 處理發(fā)生的事件
                   
                    }

                  }


                  selector.close();
          posted on 2005-05-25 15:02 小米 閱讀(3211) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 宾川县| 宝丰县| 崇仁县| 宣化县| 辽宁省| 清镇市| 涡阳县| 吐鲁番市| 青神县| 盱眙县| 梧州市| 麻栗坡县| 抚远县| 宜兴市| 新巴尔虎右旗| 万全县| 互助| 太原市| 宁远县| 贡觉县| 六盘水市| 九龙城区| 武威市| 阿瓦提县| 靖边县| 天水市| 荥经县| 平顶山市| 商城县| 贺兰县| 彝良县| 固镇县| 都匀市| 苏尼特左旗| 九寨沟县| 崇礼县| 岳西县| 宜春市| 苍山县| 武功县| 鄯善县|