Module  javafx.graphics
软件包  javafx.concurrent

Interface Worker<V>

  • 所有已知实现类:
    ScheduledServiceServiceTask


    public interface Worker<V>

    工作者是在一个或多个后台线程中执行某些工作的对象,其状态是可观察的并且可用于JavaFX应用程序,并且可从主JavaFX应用程序线程中使用。 该接口主要由TaskService实现 ,在两个类之间提供通用API,这使得库和框架更容易地为开发用户界面时工作良好的工作人员提供便利。

    根据实施情况,工人可能会也可能不会重复使用。 A Task ,例如,在Service是不可重用的。

    工人有一个明确的生命周期。 每个工人都从Worker.State.READY开始。 当工作人员被安排工作时(例如,当一个服务的Service.start()方法被调用时),它被转换为Worker.State.SCHEDULED 即使没有技术安排但是立即启动的工人(如FutureTask.run() )也将通过Worker.State.SCHEDULED转到Worker.State.RUNNING状态。

    当工作人员正在进行工作时,国家将转为Worker.State.RUNNING 如果工作人员正常完成,则将以Worker.State.SUCCEEDED状态结束,并将Worker的结果设置为value属性。 然而,如果在执行Worker时出现异常,那么状态将被设置为Worker.State.FAILED ,而exception属性将被设置为发生的异常。

    在工人结束之前的任何时间(即,如果状态尚不是Worker.State.SUCCEEDEDWorker.State.FAILED ),开发人员可能会调用cancel()方法。 如果被调用,工作者将停止执行(如果可能,包括使用Thread.interrupt),状态更改为Worker.State.CANCELLED

    对于工人的唯一有效开始状态是Worker.State.READY ,以及有效的结束状态是Worker.State.CANCELLEDWorker.State.SUCCEEDED ,并Worker.State.FAILED 当状态为Worker.State.SCHEDULEDWorker.State.RUNNING时, running属性设置为true。

    工人的进程可以通过三种不同的特性,被监测totalWorkworkDone ,并progress 这些属性由Worker接口的实际实现设置,但是可以被任何人观察到。 workDone是-1(意思是不确定进度)和totalWork (含)之间的数字。 workDone == totalWork progress将为100%(或1)。 totalWork将是-1和Long.MAX_VALUE之间的数字,包括。 进度将是-1(意思是不确定),或0到1之间的值,包括0到100%。

    Worker.State.READYWorker.State.SCHEDULED状态的工作人员将始终有workDoneprogress设置为-1。 处于Worker.State.SUCCEEDED状态的工作人员将始终有workDone == totalWorkprogress == 1 在任何其他状态下,这些属性的值可以是其各自有效范围内的任何值。

    从以下版本开始:
    JavaFX 2.0
    • 方法详细信息

      • getState

        Worker.State getState​()
        指定此Worker的当前状态。 初始值为State.READY。 任务可能会重新启动,在这种情况下,它将从其中一个终止状态(SUCCEEDED,CANCELED或FAILED)进入READY状态,然后立即进入SCHEDULED并运行。 这些状态转换可能会一个接一个地发生,但将始终以规定的顺序发生。
        结果
        这个工人的现状
      • getValue

        V getValue​()
        指定此Worker的值或结果。 这是在进入SUCCEEDED状态后设置的,并且如果Worker被重新初始化(即,如果Worker是可重用的Worker并被重置或重新启动),则清除(设置为null)。
        结果
        这个工人的当前值
      • getException

        Throwable getException​()
        表示工人运行时发生的异常(如果有)。 如果此属性值为null ,即使状态为FAILED,也没有已知的异常。 如果此属性不是null ,它很可能包含描述失败原因的异常。
        结果
        例外,如果发生
      • getWorkDone

        double getWorkDone​()
        表示已完成的当前工作量。 零或正值表示要完成的进度。 此变量值可能或可能不会从其默认值更改,具体取决于具体的Worker实现。 值-1表示当前完成的工作量无法确定(即:不确定)。 该属性的值始终小于或等于totalWork。
        结果
        完成的工作量
        另请参见:
        totalWorkProperty()progressProperty()
      • getTotalWork

        double getTotalWork​()
        表示workDoneProperty()属性的最大值。 totalWork将为-1(表示要做的工作量是不确定的),或者它将是小于或等于Double.MAX_VALUE的非零值。
        结果
        要完成的工作
        另请参见:
        workDoneProperty()progressProperty()
      • totalWorkProperty

        ReadOnlyDoubleProperty totalWorkProperty​()
        获取ReadOnlyDoubleProperty代表需要完成的最大工作量。 这些“工作单位”对Worker实现有意义,例如需要下载的字节数或要处理的图像数量或某种其他此类度量。
        另请参见:
        getTotalWork()
      • getProgress

        double getProgress​()
        表示该工作人员目前在完成百分比方面的进度。 0到1之间的值表示要完成的进度。 值-1表示当前进度无法确定(即不确定)。 此属性的默认值为-1,取决于具体的Worker实现。
        结果
        当前进展
        另请参见:
        workDoneProperty()totalWorkProperty()
      • isRunning

        boolean isRunning​()
        如果状态为SCHEDULED或RUNNING,则为真。 当将Worker绑定到一个ProgressIndicator ,通常会将ProgressIndicator的可见性绑定到Worker的running属性,并将ProgressIndicator的进度绑定到Worker的progress属性。
        结果
        如果此Worker正在运行,则为true
      • getMessage

        String getMessage​()
        获取与此Worker的当前状态相关联的消息。 这可能是例如“处理3的图像”之类的东西。
        结果
        当前的消息
      • getTitle

        String getTitle​()
        应该与此Worker关联的可选标题。 这可能是“修改图像”。
        结果
        当前标题
      • cancel

        boolean cancel​()
        终止执行这个工人。 调用此方法将从执行队列中删除此Worker或停止执行。
        结果
        returns true if the cancel was successful