在一个具有大量关闭操作的高度并发程序中,想知道如何在不过早调用System.exit()的情况下设置退出代码?可以设置“当其他一切完成时执行此代码”方法?但我真的只想提前设置退出代码。
答案 0 :(得分:3)
如果我理解你想要的是以某种方式保留退出代码,运行一些方法然后用预先确定的退出代码调用System.exit
。
IMO你应该做的是改用Shutdown hooks。即你的代码将在JVM关闭之前运行,并且(如果我正确地得到你的要求)将具有与直接编码实现相同的结果(即不使用状态变量和异常编码逻辑来实现你想要做的事情等)
答案 1 :(得分:1)
让一个主线程产生所有其他线程,这样只有当所有其他线程都完成时它才会关闭。
答案 2 :(得分:0)
在具有大量关闭操作的高度并发程序中
这对我来说是一种代码味道。
我可以理解多个线程可能想要关闭,但不应允许它们这样做。
相反,我会创建一个名为initiateShutdown(int code)
的全局方法。此方法将包含用于确定何时适合实际关闭的逻辑。由于您可能不希望从此方法返回一个线程,因此您可以实现某种永不返回的锁定,并将该线程委托给等待此锁定。
答案 3 :(得分:0)
只需将结果存储在某处并使用任何合适的同步工具来告诉您已完成。完成后,只需读取存储的结果并使用System.exit(结果)退出。
我很好奇,如果有多个线程设置了结果,你应该使用哪个?