答案 0 :(得分:0)
System.exit()杀死盒子上的整个JVM(启动JVM关闭序列)。所以调用它会杀死你的网络应用程序/服务,但也可能是你的应用程序服务器。如果你在所述服务器上部署其他任何东西,那些也会下降。 I / O操作也是如此。
答案 1 :(得分:0)
在线程执行I / O时暂停JVM会出现什么问题?
因为如果这样做,很难确定在JVM退出之前是否完成了I / O操作。对于可能正常的读取操作,但写入不完整可能会导致数据永久丢失。
杀死未完成的I / O操作可能比杀死例如数据库事务更糟糕吗?
是的,情况更糟。
如果在数据库事务 1 正在进行时终止JVM,数据库将恢复为一致状态。即使JVM在没有正常的JVM关闭挂钩运行的情况下被杀死,也应该发生 。这是通过数据库以受控方式将数据写入文件系统来实现的,该方式对于被中断是有弹性的;即原子写入的某种组合,以及按特定顺序写入事物。数据库可能需要在重新启动时执行一些恢复,但已安全地保存已提交的数据。 (这是ACID中的D(耐久性)。)
1 - 假设数据库具有ACID属性,并且您不会遭受灾难性的介质故障。