8

如果我启动一个 Java 应用程序,它会启动并完成一些工作,然后进入线程睡眠一个小时,然后在一个小时后醒来并做更多的工作......

但是我的电脑运行的是 Win7,在 15 分钟不活动后,它将进入睡眠模式,所以我的问题是:从我启动 Java 应用程序的一个小时后,如果我不触摸电脑,它就会进入睡眠模式,我的 Java 应用程序是否仍然能够唤醒并完成其工作,如果是这样,Win7 PC 是否会在屏幕再次打开时唤醒[因为在 Win7 睡眠模式下屏幕会关闭]?

4

4 回答 4

10

正常的 Thread.sleep() 不会将计算机从睡眠模式唤醒。

但是,在使用 Windows 任务计划程序注册任务时,您可以选择“唤醒计算机以运行此任务”。当进入睡眠模式时,Windows 会告诉主板下一个注册唤醒任务的时间。

于 2010-10-18T15:03:37.117 回答
4

如果没有 Windows,它怎么可能运行?主板支持的自动唤醒可能有一些技巧,但是当机器处于睡眠模式时,从操作系统和程序的角度来看,它可能还不如关闭。

编辑:注意其他答案,这些答案表明使用一些 Windows API 和工具(可能与主板一起提供定时唤醒)的变通方法。

于 2010-10-18T14:56:44.247 回答
3

我知道WHS的客户端组件允许您的 PC 自行唤醒以执行客户端备份。您实际上可以指定将 PC 从睡眠状态唤醒以执行通过实际WHS控制的备份的选项。他们完成这项任务的方式不是通过 Java,而且我确信他们在操作系统中有不同的钩子,因为在睡眠模式下实际上仍然有电源供应。这是一篇文章,讨论了在 Java/C++ 中检测到待机的移动并防止它,并且可能对您尝试以不同的方式完成的工作有价值。此外,您还可以使用WOL远程唤醒 PC。

于 2010-10-18T15:06:22.487 回答
1

如果您的机器处于睡眠状态,那么一切都会暂停。包括您可能想要运行的任何自定义应用程序。

于 2010-10-18T15:00:28.167 回答