首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

ServerChannel非阻塞模式的疑问解决思路

2012-05-27 
ServerChannel非阻塞模式的疑问Java codewhile(true){ int nkeys selector.select() if(nkeys)continu

ServerChannel非阻塞模式的疑问

Java code
while(true){ int nkeys =  selector.select(); if(nkeys==)  continue; else{   .... }}

因为没有了阻塞,如果没有连接传入,就会在while后直接循环,造成cpu 100%,是这样吗?

[解决办法]
你觉得可能吗,你写一个while(true){},跑跑看,这能出现cpu100%
[解决办法]
不会啊,一般 select() 方法这里会阻塞的。

除非你没有数据要写入的时候注册了的 OP_WRITE 事件,这就会引起 CPU 占用 100%。

如果在网络畅通的情况下,都是允许被写入的,因此 select() 这里一直会有 OP_WRITE 事件产生。

对于 WRITE 事件来说,只在有数据写入时才注册该事件,写完后再注销该事件。

热点排行