隨筆-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
          主站蜘蛛池模板: 邢台市| 金阳县| 绩溪县| 博白县| 通河县| 南阳市| 苗栗县| 安阳市| 银川市| 兴隆县| 滨州市| 台中县| 织金县| 横山县| 海口市| 惠东县| 天全县| 石渠县| 利川市| 吴江市| 深州市| 内江市| 兖州市| 陈巴尔虎旗| 虹口区| 谢通门县| 柘城县| 大连市| 桃江县| 偏关县| 商洛市| 鄂托克前旗| 左云县| 武汉市| 拜城县| 巨野县| 泰安市| 扬州市| 聊城市| 张家港市| 古田县|