JavaFX调度和任务并发

时间:2015-07-15 03:55:49

标签: java javafx javafx-2 scheduled-tasks javafx-8

作为前言,我对使用Java和JavaFX编程非常陌生。

我想为我的程序制作一个调用按钮的调度按钮:setSchedule()

我希望按钮设置一个定期任务,在调用之间定义一段时间。

我创建了一个名为CreateTask的课程。我在CreateTask内有一个返回Task<Void>的函数,该函数名为getTask()

调用setSchedule时:

CreateTask createTask = new CreateTask();
Task task = createTask.getTask();

bar.progressProperty().bind(uploadTask.progressProperty());
programStatusText.textProperty().bind(uploadTask.messageProperty());

ScheduledThreadPoolExecutor sch = (ScheduledThreadPoolExecutor)Executors.newScheduledThreadPool(5);
sch.scheduleWithFixedDelay(task, 5, 5, TimeUnit.SECONDS);

我的程序非常适合一次执行。进度条加载,我的功能完成。问题是该任务不会再被调用。

我曾尝试研究为什么会发生这种情况,到目前为止我还没有运气!

2 个答案:

答案 0 :(得分:2)

来自Task docs

  

任务是一次性课程,不能重复使用。请参阅服务以获取可重复使用的工作人员。

答案 1 :(得分:1)

对于JavaFX,我通常使用TimeLine来执行计划任务。像这样的东西

HomeController

编辑: 添加了cycleBackground方法的源代码,以显示在JavaFX主线程上执行时,teask是并且应该是微不足道的,因为正如Jewelsea所指出的那样,我在原帖中并不清楚。还注意到我包含了以前的版本,它需要捕获我使用的最终版本不需要的异常。