设置Java退出代码而不退出

时间:2012-09-07 20:31:27

标签: java shutdown exit-code

在一个具有大量关闭操作的高度并发程序中,想知道如何在不过早调用System.exit()的情况下设置退出代码?可以设置“当其他一切完成时执行此代码”方法?但我真的只想提前设置退出代码。

4 个答案:

答案 0 :(得分:3)

如果我理解你想要的是以某种方式保留退出代码,运行一些方法然后用预先确定的退出代码调用System.exit
IMO你应该做的是改用Shutdown hooks。即你的代码将在JVM关闭之前运行,并且(如果我正确地得到你的要求)将具有与直接编码实现相同的结果(即不使用状态变量和异常编码逻辑来实现你想要做的事情等)

答案 1 :(得分:1)

让一个主线程产生所有其他线程,这样只有当所有其他线程都完成时它才会关闭。

答案 2 :(得分:0)

  

在具有大量关闭操作的高度并发程序中

这对我来说是一种代码味道。

我可以理解多个线程可能想要关闭,但不应允许它们这样做。

相反,我会创建一个名为initiateShutdown(int code)的全局方法。此方法将包含用于确定何时适合实际关闭的逻辑。由于您可能不希望从此方法返回一个线程,因此您可以实现某种永不返回的锁定,并将该线程委托给等待此锁定。

答案 3 :(得分:0)

只需将结果存储在某处并使用任何合适的同步工具来告诉您已完成。完成后,只需读取存储的结果并使用System.exit(结果)退出。

我很好奇,如果有多个线程设置了结果,你应该使用哪个?