Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当PC进入休眠模式时,Java如何计算睡眠时间?_Java_Jvm_Sleep_Sleep Mode - Fatal编程技术网

当PC进入休眠模式时,Java如何计算睡眠时间?

当PC进入休眠模式时,Java如何计算睡眠时间?,java,jvm,sleep,sleep-mode,Java,Jvm,Sleep,Sleep Mode,我编写了一个Java程序,该程序执行一些函数,预计将睡眠12小时(通过TimeUnit.hours.sleep(12)),然后继续执行另一个函数 我错误地让我的笔记本电脑在一夜之间没有连接到电源,我的笔记本电脑进入了休眠模式。今天早上我把电脑从休眠模式唤醒,我的程序和以前一样在运行 但是,从调用初始的TimeUnit.hours.sleep(12)到代码(即第二个函数)没有执行,现在已经超过12个小时了 这是否意味着我现在必须再等12个小时(从我醒来时开始),它才能执行我想要的代码?(我现在不能

我编写了一个Java程序,该程序执行一些函数,预计将睡眠12小时(通过
TimeUnit.hours.sleep(12)
),然后继续执行另一个函数

我错误地让我的笔记本电脑在一夜之间没有连接到电源,我的笔记本电脑进入了休眠模式。今天早上我把电脑从休眠模式唤醒,我的程序和以前一样在运行

但是,从调用初始的
TimeUnit.hours.sleep(12)
到代码(即第二个函数)没有执行,现在已经超过12个小时了

这是否意味着我现在必须再等12个小时(从我醒来时开始),它才能执行我想要的代码?(我现在不能停止我的程序来测试这一点,因为我保证我的函数即使在额外的12小时后也不会执行,因为它依赖于依赖于实时数据的第一个函数的输出)

我在上发现了一个类似的线程,与C相关,但与Java无关

基于一个线程,我读的程序在确定睡眠时间时比较了两个时间戳,但肯定不能这样,否则我的代码就已经执行了。那么
thread.sleep()
在引擎盖下是如何工作的呢


感谢线程。睡眠的实现显然依赖于平台

HotSpot JVM在Windows上调用,在所有POSIX操作系统上使用
CLOCK_monotic
。当系统挂起时,Windows和Linux API都不会占用时间


基本上,
Thread.sleep
从来都不是为在休眠期间工作而设计的。有关更多信息,请参阅和的讨论。

理论上,休眠会冻结磁盘、内存和处理器的状态,并安全地保存它们。也就是说,一旦你从休眠状态返回后打开笔记本电脑,它就会恢复到你关闭它的状态。在此期间,后台没有进程或线程运行。我会尝试反复睡眠1分钟(或更少),直到挂钟上的时间到达+1我刚刚在Windows 10上用Java 1.8.0202尝试了这一点,实际上,睡眠目标时间错过的时间与休眠PC、等待一段时间并解除其纤化所花费的时间差不多。