Java 尝试使用资源和服务器套接字
我在上阅读了KnockKnock服务器示例,发现了一些代码,对此我有一些疑问Java 尝试使用资源和服务器套接字,java,multithreading,sockets,try-catch,serversocket,Java,Multithreading,Sockets,Try Catch,Serversocket,我在上阅读了KnockKnock服务器示例,发现了一些代码,对此我有一些疑问 try (ServerSocket serverSocket = new ServerSocket(portNumber)) { while (listening) { new KKMultiServerThread(serverSocket.accept()).start(); } } catch (IOException e) { System.err.println("Co
try (ServerSocket serverSocket = new ServerSocket(portNumber)) {
while (listening) {
new KKMultiServerThread(serverSocket.accept()).start();
}
} catch (IOException e) {
System.err.println("Could not listen on port " + portNumber);
System.exit(-1);
}
我的问题是:
serverSocket
的范围是什么?它在捕获的异常块或周围块的其他地方可用吗?如果没有,如何可靠地关闭插座侦听
设置为false,然后在接受线程上调用中断()
。在这种情况下,accept()方法将返回并立即跳转到异常处理,然后try(resource)/catch(更像是try/catch/finally close())将确保服务器正确关闭。这也将释放用于其他程序的端口
它们终止上述循环的正确方法是将
侦听
设置为false,然后在接受线程上调用中断()
。在这种情况下,accept()方法将返回并立即跳转到异常处理,然后try(resource)/catch(更像是try/catch/finally close())将确保服务器正确关闭。这也将释放用于其他程序的端口。服务器套接字在其析构函数中自动关闭,线程也会“停止”。这里讨论了serverSocket
变量的作用域:@JeroenBollen Java中没有析构函数。@EJP抱歉,混淆了服务器套接字在其析构函数中自动关闭,线程也会“停止”。这里讨论了serverSocket
变量的作用域:@JeroenBollen Java中没有析构函数。@EJP抱歉弄糊涂了