10

在具有大量关闭操作的高并发程序中,想知道如何设置退出代码而不提前调用 System.exit()?可以设置“在完成其他所有操作后执行此代码”方法吗?但我真的只是想过早地设置退出代码。

4

4 回答 4

3

如果我理解正确,您想要以某种方式保留退出代码,运行一些方法,然后System.exit使用预先确定的退出代码调用。
IMO 你应该做的是使用Shutdown 挂钩。即您的代码将在 JVM 关闭之前运行,并且(如果我正确地满足了您的要求)将通过简单的编码实现获得相同的结果(即,而不是使用状态变量和不寻常的编码逻辑来实现您想要做的事情等)

于 2012-09-07T20:35:47.597 回答
1

让一个主线程产生所有其他线程,以便它仅在所有其他线程完成时关闭。

于 2012-09-07T20:35:26.043 回答
0

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

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

于 2012-09-07T20:40:56.573 回答
0

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

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

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

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

于 2012-09-07T20:36:13.853 回答