【发布时间】:2015-01-11 19:41:55
【问题描述】:
我有一个强制执行 AES256 加密的程序,当计算机进入关机/或重新启动时如何暂停该程序并在同一点继续直到系统下次启动?
程序的一种休眠。
【问题讨论】:
-
您必须将程序的状态写入磁盘。 (与算法进度相关的所有变量的内容。)然后在重新启动程序后将这些值加载回变量中。
标签: java hibernation
我有一个强制执行 AES256 加密的程序,当计算机进入关机/或重新启动时如何暂停该程序并在同一点继续直到系统下次启动?
程序的一种休眠。
【问题讨论】:
标签: java hibernation
我同意@Thufir 回答的第 2 部分和第 3 部分,但关于第 1 部分,它假定您正在运行 GUI。
我会在 JVM 中添加一个 shutdown hook 并在此时写入我的程序的状态,而不是这个。您可以使用以下方法执行此操作:
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
// your serialization code goes here
}
});
【讨论】:
你在这里问了三件事。
1- 如何检查操作系统何时重新启动/关闭
解决方案: 您可以制作一个空的不可见窗口,并将 WindowListener 添加到其中。它将在 windows 上接收 windowClosing 事件。
你可以找到一个例子HERE
2- 如何保存 BruteForce 进程的状态并在系统启动时暂停以重新启动。
解决方案: 这里很简单,你必须序列化。当系统再次启动时,这些将保存您的类/类的状态以反序列化。你可以学习HERE
3- OS UP 时如何知道何时再次启动程序?
解决方案: 您可以将程序置于操作系统的初始化过程中。当它启动时,您检查是否有任何要反序列化的内容并执行此操作,从而恢复 BruteForce 的过程。
【讨论】: