繁体   English   中英

可以在Java虚拟机中减慢时间吗?

[英]Possible to slow down time in the Java virtual machine?

在Java虚拟机中是否可以通过修改OpenJDK的源码来根据CPU使用情况来减慢时间? 我有一个网络模拟(Java 到 ns-3),它消耗实时,与挂钟松散同步。 但是,因为我在模拟中运行了这么多客户端,CPU 使用率达到 100%,并且无法保证模拟器中的事件需要多长时间才能处理(即大量超迟事件)。 因此,当网络流量很大时,模拟在大约 40 个节点上达到顶峰,即使这样也有点不确定。 理想的解决方案是根据 CPU 减慢时间,但我不确定如何成功地做到这一点。 一个较小的解决方案是将时间减慢一些倍数(时间透镜?)。

如果有人可以提供一些指导,相关文件(适用于 Windows)的源代码位于http://pastebin.com/RSQpCdbD 我已经尝试修改文件的某些部分,但我的结果并不是很成功。

提前致谢,
克里斯

您可能会查看VirtualBox ,它允许从命令行加速或减慢访客时钟

我不完全确定这是否是您想要的,但是使用Joda-time库,您可以完全停止时间。 因此,在 Joda-time 内调用 new Date() 或 new DateTime() 将不断返回相同的时间。

因此,您可以通过此调用在一个线程“停止时间”中:

DateTimeUtils.setCurrentMillisFixed(System.currentTimeMillis());

然后你的线程可以休眠 5000 毫秒,然后调用:

// advance time by one second
DateTimeUtils.setCurrentMillisFixed(System.currentTimeMillis() + 1000);

因此,只要您的应用程序根据系统内的时间执行任何操作,这将通过将时间设置为每 5 秒向前一秒来“减慢”时间。

但是,正如我所说......我不确定这是否适用于您的环境。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM