-1

我正在尝试在它自己的线程中运行 NIO 服务器。

在我的运行函数中,我定义了:

while(running)
{
   System.out.println("Server running!");
   try
   {
      this.selector.select();
   }
   catch (IOException e)
   {
      e.printStackTrace();
   }
}

运行循环只运行一次,然后就卡住了。如果没有整个 try 块,它就可以工作。

它的 selector.select() 以某种方式阻塞?

4

1 回答 1

4

文件说,

此方法执行阻塞选择操作。它仅在至少选择一个通道、调用此选择器的唤醒方法或当前线程被中断(以先到者为准)后才返回。

所以它应该阻塞,直到选择一个通道。

对于非阻塞选择/忙碌循环,请尝试selectNow方法。

于 2012-11-11T19:10:59.180 回答