2023年12月11日发(作者:)

电脑睡眠对java程序的影响

一、问题

在win10系统电脑上写了一个定时任务程序,每天晚上会自动上报自己的健康信息,下班锁屏不关电脑,但是三个晚上都没成功,我开

始怀疑是cron表达式写错了,但是经过校验都是对的,于是我想是不是电脑在晚上睡眠了,程序就不运行了,于是测试了下。

二、测试

代码:每隔10秒打印语句

package ;

import led;

import ent;

import amp;

@Component

public class Test {

@Scheduled(cron = "*/10 * * * * ?")

public void test() {

Timestamp timestamp = new Timestamp(tTimeMillis());

n(timestamp + "=========");

}

}

睡眠:

结果:

程序睡眠后不会执行定时任务

三、原因

来自百度百科:

睡眠(Sleep),是Windows Vista中的新模式,这种模式结合了待机和休眠的所有优点。将系统切换到睡眠状态后,系统会将内存中

的数据全部转存到硬盘上的休眠文件中(这一点类似休眠),然后关闭除了内存外所有设备的供电,让内存中的数据依然维持着(这一点类

似待机)。这样,当我们想要恢复的时候,如果在睡眠过程中供电没有发生过异常,就可以直接从内存中的(类似待机),速度很快;但如

果睡眠过程中供电异常,内存中的数据已经丢失了,还可以从硬盘上恢复(类似休眠),只是速度会慢一点。

不过无论如何,这种模式都不会导致数据丢失。正因为睡眠功能有这么多优点,因此Windows Vista上的电源按钮默认就会将系统切

换到睡眠模式。所以我们大可充分利用这一新功能,毕竟从睡眠状态下恢复,速度要比从头启动快很多。而且睡眠模式也不是一直进行下去

的,如果系统进入睡眠模式一段时间后(具体时间可以设定)没有被唤醒,那么还会自动被转入休眠状态,并关闭对内存的供电,进一步节

约能耗。

四、设置