JavaFX:ScheduledService不会在每次迭代后触发成功状态更改

JavaFX:ScheduledService不会在每次迭代后触发成功状态更改,java,javafx,concurrency,Java,Javafx,Concurrency,我遇到了一个奇怪的错误,ScheduledService在成功完成任何迭代时都不会触发changelister 这是如何复制的: final ScheduledService<Void> service = new ScheduledService<Void>() { @Override protected Task<Void> createTask() { // TODO Auto-generated method s

我遇到了一个奇怪的错误,
ScheduledService
在成功完成任何迭代时都不会触发
changelister

这是如何复制的:

final ScheduledService<Void> service = new ScheduledService<Void>()
{
    @Override
    protected Task<Void> createTask()
    {
        // TODO Auto-generated method stub
        return new Task<Void>()
        {
            @Override
            protected Void call() throws Exception
            {
                // TODO Auto-generated method stub
                return null;
            }
        };
    }
};

service.setOnSucceeded(event ->
{
    System.out.println("onSucceeded() triggered!");
});

service.stateProperty().addListener((obs, o, n) ->
{
    System.out.println(n);
});

service.setPeriod(Duration.seconds(2));

service.start();
这很奇怪,因为触发了
onSucceeded()
事件,但
ChangeListener
没有得到相应的值更改。当然,我完全可以使用
setOnSucceeded()
来完成我的所有工作,但这仍然很奇怪,因为我已经处理了
ChangeListener
中的所有状态,除了
成功


这算是API中的一个bug吗?

是的,看起来像个bug。我不太清楚它到底在哪里:
服务
在开始任务时将其状态绑定到
任务
的状态,并且有一些相当复杂的代码在任务完成时解除绑定。看起来,
ScheduledService
在某种程度上过早地解除了该状态的绑定。同样奇怪的是,你看到了两个到
计划的
@James\u D的转换,似乎我发现有人同意我的观点,认为API有些奇怪。为此提交了一份bug报告,但考虑到存在解决方法,它可能会在JDK10或11中得到修复。
READY
SCHEDULED
SCHEDULED
RUNNING
onSucceeded() triggered!
READY
SCHEDULED
SCHEDULED
RUNNING
onSucceeded() triggered!
READY
SCHEDULED
SCHEDULED