当Windows处于睡眠模式时,预定的Java应用程序是否会运行?

问题描述:

如果我开始一个Java应用程序,它启动和然后做一些工作去线程睡眠一小时,再一个小时后醒来,做一些更多的工作...当Windows处于睡眠模式时,预定的Java应用程序是否会运行?

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

+0

我真的怀疑你的计算机可以在没有某些硬件信号(例如键盘或网络唤醒IRQ)的情况下退出睡眠模式。软件无法做到这一点:在睡眠模式下,您的处理器不会运行任何代码,甚至不会运行您的操作系统的代码。 – 2010-10-18 14:59:25

+0

我相信我已经看到Windows Media Center可以唤醒电脑来录制节目。必须是主板时钟的事情。 – 2010-10-18 15:00:27

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

编辑:注意其他答案,指出使用一些Windows API和工具(这大概与主板一起提供定时唤醒)的解决方法。

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

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

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

+0

+1非常有趣!不知道! – 2010-10-18 15:43:28

我知道WHS的客户端组件允许您的电脑唤醒自己执行客户端备份。您实际上可以指定从睡眠中唤醒PC以执行通过实际WHS控制的备份的选项。他们如何完成这项任务不是通过Java,我相信他们对操作系统有不同的挂钩,因为在睡眠模式下,实际上仍有电力供应。这是一个article,它讨论了如何在Java/C++中检测到转移到待机状态并阻止它,并且可能为您正在尝试以不同方式完成的任务保持价值。另外,您可以使用WOL远程唤醒PC。