【发布时间】:2014-12-05 21:50:01
【问题描述】:
我想写一个响应时间长的 HTTP 服务器。 我准备了一个循环:
serverSocketChannel = ServerSocketChannel.open();
serverSocketChannel.socket().bind(new InetSocketAddress(InetAddress.getByName("127.0.0.1"), 8000));
while (serverSocketChannel.isOpen()) {
try {
System.out.println("Waiting...");
SocketChannel socketChannel = serverSocketChannel.accept();
System.out.println("The new connection is open ;)");
} catch (IOException ex) {
System.out.println(ex.getMessage());
Logger.getLogger(ServerHttp.class.getName()).log(Level.SEVERE, null, ex);
}
}
我想从用户的浏览器中捕获新连接,将其放入列表中,然后另一个线程将获取并解析它。 但我一开始就有问题:上面的代码在方法 serverSocketChannel.accept() 中冻结。
当我添加 socketChannel.close() 时一切正常,但我不想在这个地方关闭连接,因为我需要很长时间的响应。
【问题讨论】: