正如我在启动Java应用程序之前所知道的那样,它为它分配了一些RAM,并且这个内存可以在启动之前由用户控制.但是当我启动应用程序时,每次都有不同的执行时间,还有另一个问题.
这是一个非常简单的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);
}
}
Run Code Online (Sandbox Code Playgroud)
它打印出不同的结果:
duration = 5720542
duration = 7331307
duration = 7737946
duration = 6899173
Run Code Online (Sandbox Code Playgroud)
假设我希望它能够精确地执行10,000,000纳秒或10毫秒.
我希望java应用程序执行精确的时间执行.
当我启动一个应用程序时,我想在加载所有组件之前显示应用程序启动窗口上剩下的确切执行时间.
我想这是一种CPU操作,我想知道它是否可能.
Q1:在Java中有可能吗?
Q2:如果在Java中不可能,那么有没有办法通过访问OS本机方法来实现这一点.例如,通过优先考虑Java应用程序或其他东西?
问题3:如何将应用程序的状态保存到文件并将其加载到内存中?
我知道如何使鼠标透明Node。但是我想在颜色和鼠标事件中创建透明窗口,以便光标可以通过该窗口并单击其下方的应用程序。
这是最小的代码:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class MouseTransparentWindow extends Application {
@Override
public void start(Stage primaryStage) {
StackPane stackPane = new StackPane();
stackPane.setStyle("-fx-background-color: rgba(192,192,192,0.2);" +
"-fx-border-width: 1px;-fx-border-color: #1d1d1d");
stackPane.setMouseTransparent(true);
Scene scene = new Scene(stackPane, 400, 250, Color.TRANSPARENT);
scene.setFill(null);
primaryStage.setScene(scene);
primaryStage.initStyle(StageStyle.TRANSPARENT);
primaryStage.show();
}
}
Run Code Online (Sandbox Code Playgroud)
看来它可以在Windows上运行,但是我需要我的代码在所有操作系统上都可以运行。