【发布时间】:2019-10-16 08:38:41
【问题描述】:
目前,这就是我如何获得完成流程所需的时间。
long start = System.currentTimeMillis();
process();
long end = System.currentTimeMillis();
long duration = stop - start;
System.out.println(duration);
我目前面临的问题是process() 会在没有电源时被我的电脑休眠中断(暂停)(我的工作环境在外面,所以我必须使用电池),以便在我重新启动时它可以继续插上电脑时。我完全知道,如果例如由于进程暂停(在休眠期间),我无法重新启动大约 2 小时,我会得到错误的持续时间,因为这意味着额外的 2 小时将通过 CMOS 电池由 CPU 时钟占用随时备份行
long end = System.currentTimeMillis();
已到达。无论进程是否被单独暂停,如何才能获得确切的持续时间。
【问题讨论】:
-
听起来有点奇怪,你正在计时一个进程,而你会让你的计算机在两者之间休眠。要获得您想要的可能需要本机代码,使解决方案比您的问题复杂得多。如果您正在计时操作,请不要让您的计算机进入睡眠状态。就这么简单。
-
据我了解,在 JDK 上创建了类似的票证,请参阅bugs.openjdk.java.net/browse/JDK-8146730
-
@SiddarthSreeni 看起来并不相关,因为它与 Windows 平台上的特定本机时间有关。问题更多是关于“如何测量挂钟时间减去休眠时间”。
-
您可以从亚马逊租用便宜的服务器并在那里运行您的代码,只要您愿意。那将是最直接的解决方案。如果您没有可靠的电源/网络,那么您将不会成为一个非常高效的开发人员,尤其是如果您需要使用技巧来继续开发。但我会给你一些东西......
-
这听起来可能有点菜鸟,但是使用 Date 类对你有利呢?我的意思是,您可以获取流程前后的当前时间并计算差异。唯一的缺点(我能想到的)是在尝试获取当前时间时可能会出现一分钟的时间延迟。