如果我启动一个Java应用程序,它启动并做一些工作然后进入线程睡眠一小时,然后在一小时后醒来并做更多工作......
但我的电脑正在运行Win7,经过15分钟的不活动后,它将进入睡眠模式,所以我的问题是:从我启动Java应用程序一小时后,如果我不接触电脑,它会进入睡眠模式,我的Java应用程序是否仍然可以唤醒并完成其工作,如果是这样,Win7 PC会在屏幕再次打开时唤醒[因为在Win7睡眠模式下屏幕关闭]?
答案 0 :(得分:8)
正常的Thread.sleep()不会将计算机从睡眠模式唤醒。
但是,在使用Windows任务计划程序注册任务时,您可以选择“唤醒计算机以运行此任务”。进入睡眠模式时,Windows会告诉主板下次注册唤醒任务的时间。
答案 1 :(得分:3)
如果不是Windows,它怎么可能运行?主板支持自动唤醒可能有一些技巧,但是当机器处于睡眠模式时,从操作系统和程序的角度来看,它可能也会关闭。
编辑:请注意其他答案,这些答案表明使用某些Windows API和工具(可能与主板一起提供定时唤醒)的解决方法。
答案 2 :(得分:2)
我知道WHS的客户端组件允许您的PC唤醒自己以执行客户端备份。您实际上可以指定从睡眠状态唤醒PC以执行通过实际WHS控制的备份的选项。他们如何完成这项任务不是通过Java而是我确定他们在操作系统中有不同的挂钩,因为在休眠模式下实际上仍有电源供电。这是一个article,它讨论了如何在Java / C ++中检测移动到备用状态并防止它移动,并且可以为您尝试以不同方式完成的任务保留价值。此外,您可以使用WOL远程唤醒PC。
答案 3 :(得分:0)
如果您的机器处于睡眠状态,则一切都会暂停。包括您可能想要运行的任何自定义应用。