关于Java NIO的一些问题,求助。
在一写一个多用户的Server程序。
现在的问题是在selector.select()方法上。
如果调用select()方法,阻塞方式等待事件,这个时候就不可以再在这个selector上注册新的事件,我感觉是互相锁了。
如果调用select(100)这样的非阻塞方式,可以避开这个问题,但是影响性能,因为有很多空转。
我尝试着使用wakeup让select()方法释放对selector的锁定,可是因为在while循环里面执行得太快,下一个循环到来时候新的事件还没有来得及注册上结果又锁上了。
目前使用的方法是在wakeup之后让while循环sleep 10毫秒,虽然能解决这个问题,但是毕竟感觉不爽,又没有高人能解决的。
简单的说就是一个线程被select()方法挂起,另一个线程如果尝试在这个selector上注册事件则也会被挂起。