while(true){
 int nkeys =  selector.select();
 if(nkeys==)
  continue;
 else{
   ....
 }
}因为没有了阻塞,如果没有连接传入,就会在while后直接循环,造成cpu 100%,是这样吗?

解决方案 »

  1.   

    你觉得可能吗,你写一个while(true){},跑跑看,这能出现cpu100%
      

  2.   

    不会啊,一般 select() 方法这里会阻塞的。除非你没有数据要写入的时候注册了的 OP_WRITE 事件,这就会引起 CPU 占用 100%。如果在网络畅通的情况下,都是允许被写入的,因此 select() 这里一直会有 OP_WRITE 事件产生。对于 WRITE 事件来说,只在有数据写入时才注册该事件,写完后再注销该事件。
      

  3.   

    恩,我看错了,select方法本身会阻塞的。