【问题标题】:Canceling JavaFX Service when in SCHEDULED state处于 SCHEDULED 状态时取消 JavaFX 服务
【发布时间】:2015-11-07 14:52:21
【问题描述】:

我正在尝试使用 cancel() 方法取消我的 JavaFX Service。 在调用cancel() 之前,我会检查Worker 的状态。

System.out.println(service.getState());

System.out.println(service.cancel());

Worker 处于SCHEDULED 状态时,cancel() 方法会持续失败。 cancel() 返回 false,Worker 进入 RUNNUNG 状态,然后终止为 SUCCEEDED

我在文档中找不到任何关于 cancel() 不影响 SCHEDULED Worker 的内容。这是正常行为吗?

【问题讨论】:

    标签: javafx java.util.concurrent


    【解决方案1】:

    如果是这种情况,那么你应该file a bug report,因为你描述的行为直接与specified behavior in the Worker.State javadoc相矛盾。

    当 READY、SCHEDULED 或 RUNNING 时,Worker 可能会被取消,在这种情况下,最终状态将为 CANCELLED。当 Worker 在其中一种情况下被取消时,它将立即转换为 CANCELED 状态。


    我的任务可能是一些并发问题吗?

    我希望有人回答有关您代码中潜在问题的问题,您需要编辑您的问题以提供MCVE

    是否有任何来源概述了 cancel() 失败的原因?

    javafx-src.zip is included in the Oracle Java 8 JRE,您可以调查源代码以确定其行为的一些原因。

    【讨论】:

    • 我的任务可能是一些并发问题吗?如果是这种情况,工人是否能够进入 SUCCEEDED 状态?是否有任何来源概述了 cancel() 失败的原因?
    • 我不知道您的代码是否有任何问题,您需要编辑您的问题以提供MCVE 供某人验证。 javafx-src.zip is included in the Oracle Java 8 JRE,您可以调查源代码以确定其行为的一些原因。
    猜你喜欢
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多