您走在正确的轨道上,从完成的回调中调用accept()以便接受更多连接应该起作用。
防止线程终止的一种简单(但难看)的方法是简单地循环直到线程被中断。
// yes, sleep() is evil, but sometimes I don't carewhile (true) { Thread.sleep(1000);}
一种更清洁的方法是使用
AsynchronousChannelGroup。例如:
AsynchronousChannelGroup group = AsynchronousChannelGroup.withThreadPool(Executors .newSingleThreadExecutor());AsynchronousServerSocketChannel server = AsynchronousServerSocketChannel.open(group).bind( new InetSocketAddress(port));// (insert server.accept() logic here)// wait until group.shutdown()/shutdownNow(), or the thread is interrupted:group.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);
您可以调整线程的处理方式,有关更多信息,请参见AsynchronousChannelGroup
API文档。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)