【发布时间】:2014-05-19 23:33:45
【问题描述】:
我正在用 Java 编写服务器-客户端应用程序,我希望服务器在客户端崩溃或意外关闭时向客户端发送消息。
Runtime.getRuntime().addShutdownHook(new Thread(){
public void run(){
out.writeObject(new ServerQuit());
out.close();
}
}
其中out 是用于写入客户端的输出流,ServerQuit 表示服务器崩溃时发送的消息。
这样做安全吗? Javadocs 表示,不应“盲目依赖可能已经注册了自己的关闭钩子的服务,因此它们自己可能正在关闭过程中”。由于 JVM 关闭时 I/O 流会自动关闭,所以我的关闭挂钩会起作用吗?也就是说,在关闭挂钩运行时,I/O 流是否已经关闭?
【问题讨论】:
-
我很确定在崩溃的情况下服务器会停止。不能真的依靠任何东西来崩溃。 idk 关于关机虽然...
标签: java io shutdown-hook