ros*_*tex 5 java testing concurrency multithreading javafx
这里有很多问题,询问如何暂停后台线程的JavaFX应用程序线程,但我想要相反!
我正在尝试测试一系列关键输入完全处理所需的时间.我正在使用JavaFX 的Automaton测试库,而editor.type(key)生成一个由应用程序处理的按键事件.这是许多尝试之一:
long start = System.nanoTime();
editor.type(AGUtils.LEFT_ARROW);
editor.type(AGUtils.LEFT_ARROW);
editor.type(AGUtils.RIGHT_ARROW);
editor.type(AGUtils.RIGHT_ARROW);
FutureTask<Callable> t = new FutureTask<>(...);
Platform.runLater(t);
while (!t.isDone()) { } // wait for the FutureTask to be called
long end = System.nanoTime();
Run Code Online (Sandbox Code Playgroud)
但是,FX应用程序线程似乎在处理其余的按键事件之前处理FutureTask.
TLDR:我想精确测量JavaFX应用程序线程何时完成处理我生成的四个按键事件.
我怎么能这样做?谢谢!
使用 ExecutorService并等待线程完成。存储启动服务的时间戳,然后比较两个时间之间的差异以获得答案。
关于如何使用的简单示例ExecutorService:
ExecutorService taskExecutor = Executors.newFixedThreadPool(4);
while(...) {
taskExecutor.execute(new MyTask());
}
taskExecutor.shutdown();
try {
taskExecutor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1149 次 |
| 最近记录: |