据我所知,在启动Java应用程序之前,JVM会为其分配一些内存,并且在启动之前用户可以控制这段内存。但是当我启动一个应用程序时,每次执行所需的时间都是不同的,这也是另一个问题。
下面是一个非常简单的for循环示例:
package timespent;
public class Main {
public static void main(String[] args) {
long startTime = System.nanoTime();
int j = 0;
for (int i = 0; i < 1.E6; i++) {
j = i + 1;
}
long endTime = System.nanoTime();
long duration = (endTime - startTime);
System.out.println("duration = " + duration);
}
}
它输出不同的结果:
duration = 5720542
duration = 7331307
duration = 7737946
duration = 6899173
假设我想让它精确执行10,000,000纳秒或10毫秒。
我想要什么?
我希望Java应用程序能够在精确的时间内执行。
为什么需要这样做?
当我启动一个应用程序时,我希望在加载所有组件之前,在应用程序启动窗口上显示准确的执行时间。
我认为这是一种CPU操作,我想知道是否可能。
Q1:Java中是否可能实现?
Q2:如果Java中不可能实现,那么通过访问操作系统本地方法是否有任何方式实现此目标。例如通过将Java应用程序设置为优先级较高或其他方式?
Q3: 将应用程序的状态保存到文件中,然后将其加载到内存中如何?
7737946纳秒
相当于0.007737946
秒,因此您在结果中看到的差异大约是0.002
秒-这在启动屏幕上并不明显。您最好发表一些更真实的演示以展示您所需要的内容。 - OldCurmudgeonThread.sleep(1000);
也不能准确地休眠1000毫秒。每次都可能有所差异,你可以自行检查。 - Asad Ganiev