关于swing按钮和net的非阻塞模式

来源:百度知道 编辑:UC知道 时间:2024/06/16 23:00:38
小弟请教以下问题:
1.serversocketchannel的accept方法的非阻塞模式和阻塞模式的区别是什么?即:serversocketchanenel.register(selector,selectionkey.op_accept);
while(selector.select()>0)......
这个while循环自身本来不就是阻塞的么?同样不是也得等待客户的连接么??而阻塞模式下serversocketchannel.accept()的效果也是阻塞。
2.小弟做的是swing服务器,当点击一个按钮(该按钮的作用是绑定端口,并且等待客户连接)时,由于没有客户连接,所以处于阻塞状态,按钮就弹不起来了,这怎么处理??有没有什么函数?
谢谢高手!

1,阻塞的accept方法不能用于select。这是select原理决定的
同时,你要明白,你的程序是肯定要阻塞的。select的目的是实现单个io操作的不阻塞。也就是说select出来的东西就是已经ready的,你可以直接用。而 不需要开n个线程,每个线程管一个io操作
2,你可以设置等待客户连接的timeout,如果过了就继续执行。至于执行什么就不是我能知道的了。