gpt4 book ai didi

java - 什么会导致 Java ScheduleService 无法运行?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:25:26 28 4
gpt4 key购买 nike

在我的 Java 应用程序中,我定义了一个 ScheduleService,如下所示:

ScheduledService<Void> scheduledService = new ScheduledService<Void>() {
@Override
protected Task<Void> createTask() {
return new Task<Void>() {
@Override
protected Void call() {
tick();
return null;
}
};
}
};
scheduledService.setPeriod(new javafx.util.Duration(TICK_PERIOD.toMillis()));
scheduledService.start();

当我从 IntelliJ 触发应用程序时,它工作正常并且 tick() 每秒运行一次。当使用 JavaFX Packager 将应用程序打包为 .exe 时,该服务永远不会启动。

在所有情况下,我运行 .start() 后服务器的状态都是 SCHEDULED。任何想法可能还会发生什么?是否有什么东西阻止了线程的创建?或者它可能不是在各种线程之间切换?

ScheduledService 的文档说(强调我的):

Timing for this class is not absolutely reliable. A very busy event thread might introduce some timing lag into the beginning of the execution of the background Task, so very small values for the period or delay are likely to be inaccurate. A delay or period in the hundreds of milliseconds or larger should be fairly reliable.

事件线程是否有问题?有没有办法检查它?

调用 start() 后,scheduleService.getExecutor() 返回 null。这是预期的吗?

我试过设置我自己的执行器是这样定义的:

BlockingQueue<Runnable> blockingQueue = new LinkedBlockingQueue<>();
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(32, Integer.MAX_VALUE, 1000, TimeUnit.MILLISECONDS, blockingQueue);
scheduledService.setExecutor(threadPoolExecutor);

然后我在调用 start 之前和之后将其打印出来。在它看起来像这样之前:

java.util.concurrent.ThreadPoolExecutor@4d97d155[Running, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]

之后:

java.util.concurrent.ThreadPoolExecutor@4d97d155[Running, pool size = 1, active threads = 1, queued tasks = 0, completed tasks = 0]

因此,它声称有一个 Activity 线程,即使它似乎根本没有 Activity 。

更新:我删除了对屏幕保护程序的提及,因为我设法将问题重现为简单的 .exe 但我仍然遇到问题,问题没有从 IntelliJ 运行它时会发生,它只会在打包为 .exe 时发生。

最佳答案

我找到了解决方案,它与 ScheduleService 无关。我的应用程序中实际上还有其他三个错误,它们正在复合以产生意外行为并隐藏我探索问题的尝试。

关于java - 什么会导致 Java ScheduleService 无法运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48476329/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com