- java.lang.Object
-
- javafx.concurrent.Service<V>
-
- 参数类型
-
V- 服务返回的对象的类型
- All Implemented Interfaces:
-
Worker<V>,EventTarget
- 已知直接子类:
-
ScheduledService
public abstract class Service<V> extends Object implements Worker<V>, EventTarget
服务是一个非可视化组件,封装了在一个或多个后台线程上执行某些工作所需的信息。 作为JavaFX UI库的一部分,该服务了解JavaFX应用程序线程,旨在缓解应用程序开发人员处理与用户界面交互的多线程代码的负担。 因此,服务上的所有方法和状态都将专门从JavaFX应用程序线程调用。 唯一的例外是初始配置一个可以从任何线程安全地完成的服务,最初启动一个服务,这也可以从任何线程安全地完成。 但是,一旦服务已被初始化和启动,它可能只能在FX线程之后使用。
一个服务创建并管理一个执行后台线程工作的
Task。 服务实施Worker。 因此,您可以观察后台任务的状态,并可以取消它。 服务是一个可重用的工作者,这意味着它可以重置并重新启动。 由于这一点,服务可以声明性地构造并按需重新启动。 一旦服务启动,它将安排其任务并监听任务状态的更改。 任务不支持启动它的服务的引用,这意味着正在运行的任务不会阻止服务被垃圾回收。如果在服务上指定了
Executor,则将用于实际执行该服务。 否则,将创建并执行守护线程。 如果要创建非守护进程线程,请指定自定义的Executor(例如,您可以使用ThreadPoolExecutor和自定义的ThreadFactory)。因为一个服务旨在简化声明性用例,子类应该将工作的输入参数作为属性公开。 例如,假设我想写一个从任何URL读取第一行的服务,并将其作为String返回。 这样的服务可以被定义,使得它具有单个属性
url。 它可能被实现为:public static class FirstLineService extends Service<String> { private StringProperty url = new SimpleStringProperty(this, "url"); public final void setUrl(String value) { url.set(value); } public final String getUrl() { return url.get(); } public final StringProperty urlProperty() { return url; } protected Task createTask() { final String _url = getUrl(); return new Task<String>() { protected String call() throws Exception { URL u = new URL(_url); BufferedReader in = new BufferedReader( new InputStreamReader(u.openStream())); String result = in.readLine(); in.close(); return result; } }; } }默认情况下,服务使用具有某些未指定的默认或最大线程池大小的线程池执行程序。 这样做是为了使天真的代码不会完全通过创建数千个线程来扩展系统。
- 从以下版本开始:
- JavaFX 2.0
-
-
Property Summary
Properties Type Property 描述 ReadOnlyObjectProperty<Throwable>exception获取表示发生的任何异常的ReadOnlyObjectProperty。ObjectProperty<Executor>executor执行者用于运行此服务。ReadOnlyStringPropertymessage获取表示消息的ReadOnlyStringProperty。ObjectProperty<EventHandler<WorkerStateEvent>>onCancelled每当任务状态转换到CANCELED状态时,都会调用onCancelled事件处理程序。ObjectProperty<EventHandler<WorkerStateEvent>>onFailed每当任务状态转换到FAILED状态时,都会调用onFailed事件处理程序。ObjectProperty<EventHandler<WorkerStateEvent>>onReady每当任务状态转换到READY状态时,都会调用onReady事件处理程序。ObjectProperty<EventHandler<WorkerStateEvent>>onRunning每当任务状态转换到RUNNING状态时,都会调用onRunning事件处理程序。ObjectProperty<EventHandler<WorkerStateEvent>>onScheduled每当任务状态转换到SCHEDULED状态时,调用onSchedule事件处理程序。ObjectProperty<EventHandler<WorkerStateEvent>>onSucceeded每当任务状态转换到SUCCEEDED状态时,调用onSucceeded事件处理程序。ReadOnlyDoublePropertyprogress获取表示进度的ReadOnlyDoubleProperty。ReadOnlyBooleanPropertyrunning获取表示Worker正在运行的ReadOnlyBooleanProperty。ReadOnlyObjectProperty<Worker.State>state获取表示当前状态的ReadOnlyObjectProperty。ReadOnlyStringPropertytitle获取表示标题的ReadOnlyStringProperty。ReadOnlyDoublePropertytotalWork获取ReadOnlyDoubleProperty代表需要完成的最大工作量。ReadOnlyObjectProperty<V>value获取表示值的ReadOnlyObjectProperty。ReadOnlyDoublePropertyworkDone获取表示当前进度的ReadOnlyDoubleProperty。
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface javafx.concurrent.Worker
Worker.State
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protectedService()创建一个新的服务。
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 <T extends Event>
voidaddEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)将事件过滤器注册到此任务。<T extends Event>
voidaddEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)注册一个事件处理程序到这个任务。EventDispatchChainbuildEventDispatchChain(EventDispatchChain tail)为此目标构建事件调度链。booleancancel()取消任何当前正在运行的任务(如果有)。protected voidcancelled()对于子类的受保护的便利方法,只要服务状态已经转换到CANCELED状态就调用。protected abstract Task<V>createTask()在JavaFX应用程序主题上启动服务后调用。ReadOnlyObjectProperty<Throwable>exceptionProperty()获取表示发生的任何异常的ReadOnlyObjectProperty。protected voidexecuteTask(Task<V> task)使用此服务上定义的executor执行给定的任务。ObjectProperty<Executor>executorProperty()执行者用于运行此服务。protected voidfailed()对于子类的受保护的便利方法,只要服务状态已经转换到FAILED状态。protected voidfireEvent(Event event)触发指定的事件。ThrowablegetException()获取属性异常的值。ExecutorgetExecutor()获取属性执行器的值。StringgetMessage()获取属性消息的值。EventHandler<WorkerStateEvent>getOnCancelled()每当任务状态转换到CANCELED状态时,都会调用onCancelled事件处理程序。EventHandler<WorkerStateEvent>getOnFailed()每当任务状态转换到FAILED状态时,都会调用onFailed事件处理程序。EventHandler<WorkerStateEvent>getOnReady()每当任务状态转换到READY状态时,都会调用onReady事件处理程序。EventHandler<WorkerStateEvent>getOnRunning()每当任务状态转换到RUNNING状态时,都会调用onRunning事件处理程序。EventHandler<WorkerStateEvent>getOnScheduled()每当任务状态转换到SCHEDULED状态时,调用onSchedule事件处理程序。EventHandler<WorkerStateEvent>getOnSucceeded()每当任务状态转换到SUCCEEDED状态时,调用onSucceeded事件处理程序。doublegetProgress()获取属性进度的值。Worker.StategetState()获取属性状态的值。StringgetTitle()获取属性标题的值。doublegetTotalWork()获取属性totalWork的值。VgetValue()获取属性值的值。doublegetWorkDone()获取属性workDone的值。booleanisRunning()获取运行的属性的值。ReadOnlyStringPropertymessageProperty()获取表示消息的ReadOnlyStringProperty。ObjectProperty<EventHandler<WorkerStateEvent>>onCancelledProperty()每当任务状态转换到CANCELED状态时,都会调用onCancelled事件处理程序。ObjectProperty<EventHandler<WorkerStateEvent>>onFailedProperty()每当任务状态转换到FAILED状态时,都会调用onFailed事件处理程序。ObjectProperty<EventHandler<WorkerStateEvent>>onReadyProperty()每当任务状态转换到READY状态时,都会调用onReady事件处理程序。ObjectProperty<EventHandler<WorkerStateEvent>>onRunningProperty()每当任务状态转换到RUNNING状态时,都会调用onRunning事件处理程序。ObjectProperty<EventHandler<WorkerStateEvent>>onScheduledProperty()每当任务状态转换到SCHEDULED状态时,调用onSchedule事件处理程序。ObjectProperty<EventHandler<WorkerStateEvent>>onSucceededProperty()每当任务状态转换到SUCCEEDED状态时,调用onSucceeded事件处理程序。ReadOnlyDoublePropertyprogressProperty()获取表示进度的ReadOnlyDoubleProperty。protected voidready()对于子类的受保护的便利方法,在服务状态已转换到READY状态时调用。<T extends Event>
voidremoveEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)从此任务中注销先前注册的事件过滤器。<T extends Event>
voidremoveEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)从此任务中注销先前注册的事件处理程序。voidreset()重置服务。voidrestart()取消任何当前正在运行的任务(如果有),并重新启动此服务。protected voidrunning()每当该服务的状态已经转换到RUNNING状态时,调用子类的受保护的便利方法。ReadOnlyBooleanPropertyrunningProperty()获取表示Worker正在运行的ReadOnlyBooleanProperty。protected voidscheduled()每当该服务的状态已转换到SCHEDULED状态时调用的子类的受保护的便利方法。protected <T extends Event>
voidsetEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)设置要用于此事件类型的处理程序。voidsetExecutor(Executor value)设置属性执行器的值。voidsetOnCancelled(EventHandler<WorkerStateEvent> value)每当任务状态转换到CANCELED状态时,都会调用onCancelled事件处理程序。voidsetOnFailed(EventHandler<WorkerStateEvent> value)每当任务状态转换到FAILED状态时,都会调用onFailed事件处理程序。voidsetOnReady(EventHandler<WorkerStateEvent> value)每当任务状态转换到READY状态时,都会调用onReady事件处理程序。voidsetOnRunning(EventHandler<WorkerStateEvent> value)每当任务状态转换到RUNNING状态时,都会调用onRunning事件处理程序。voidsetOnScheduled(EventHandler<WorkerStateEvent> value)每当任务状态转换到SCHEDULED状态时,调用onSchedule事件处理程序。voidsetOnSucceeded(EventHandler<WorkerStateEvent> value)每当任务状态转换到SUCCEEDED状态时,调用onSucceeded事件处理程序。voidstart()启动此服务。ReadOnlyObjectProperty<Worker.State>stateProperty()获取表示当前状态的ReadOnlyObjectProperty。protected voidsucceeded()对于子类的受保护的便利方法,当服务状态已转换到SUCCEEDED状态时调用。ReadOnlyStringPropertytitleProperty()获取表示标题的ReadOnlyStringProperty。ReadOnlyDoublePropertytotalWorkProperty()获取ReadOnlyDoubleProperty代表需要完成的最大工作量。ReadOnlyObjectProperty<V>valueProperty()获取表示值的ReadOnlyObjectProperty。ReadOnlyDoublePropertyworkDoneProperty()获取表示当前进度的ReadOnlyDoubleProperty。
-
-
-
Property Detail
-
state
public final ReadOnlyObjectProperty<Worker.State> stateProperty
- Specified by:
-
stateProperty在接口Worker<V> - 另请参见:
-
getState()
-
value
public final ReadOnlyObjectProperty<V> valueProperty
- Specified by:
-
valueProperty在接口Worker<V> - 另请参见:
-
getValue()
-
exception
public final ReadOnlyObjectProperty<Throwable> exceptionProperty
- Specified by:
-
exceptionProperty在接口Worker<V> - 另请参见:
-
getException()
-
workDone
public final ReadOnlyDoubleProperty workDoneProperty
- Specified by:
-
workDoneProperty在接口Worker<V> - 另请参见:
-
getWorkDone()
-
totalWork
public final ReadOnlyDoubleProperty totalWorkProperty
- Specified by:
-
totalWorkProperty在接口Worker<V> - 另请参见:
-
getTotalWork()
-
progress
public final ReadOnlyDoubleProperty progressProperty
- Specified by:
-
progressProperty在接口Worker<V> - 另请参见:
-
getProgress()
-
running
public final ReadOnlyBooleanProperty runningProperty
- Specified by:
-
runningProperty在接口Worker<V> - 另请参见:
-
isRunning()
-
message
public final ReadOnlyStringProperty messageProperty
- Specified by:
-
messageProperty在接口Worker<V> - 另请参见:
-
getMessage()
-
title
public final ReadOnlyStringProperty titleProperty
- Specified by:
-
titleProperty在接口Worker<V> - 另请参见:
-
getTitle()
-
executor
public final ObjectProperty<Executor> executorProperty
执行者用于运行此服务。 如果没有指定执行程序,则将创建一个新的守护程序线程,并使用一些默认执行程序运行该服务。- 另请参见:
-
getExecutor(),setExecutor(Executor)
-
onReady
public final ObjectProperty<EventHandler<WorkerStateEvent>> onReadyProperty
每当任务状态转换到READY状态时,都会调用onReady事件处理程序。- 从以下版本开始:
- JavaFX 2.1
- 另请参见:
-
getOnReady(),setOnReady(EventHandler)
-
onScheduled
public final ObjectProperty<EventHandler<WorkerStateEvent>> onScheduledProperty
每当任务状态转换到SCHEDULED状态时,调用onSchedule事件处理程序。- 从以下版本开始:
- JavaFX 2.1
- 另请参见:
-
getOnScheduled(),setOnScheduled(EventHandler)
-
onRunning
public final ObjectProperty<EventHandler<WorkerStateEvent>> onRunningProperty
每当任务状态转换到RUNNING状态时,都会调用onRunning事件处理程序。- 从以下版本开始:
- JavaFX 2.1
- 另请参见:
-
getOnRunning(),setOnRunning(EventHandler)
-
onSucceeded
public final ObjectProperty<EventHandler<WorkerStateEvent>> onSucceededProperty
每当任务状态转换到SUCCEEDED状态时,调用onSucceeded事件处理程序。- 从以下版本开始:
- JavaFX 2.1
- 另请参见:
-
getOnSucceeded(),setOnSucceeded(EventHandler)
-
onCancelled
public final ObjectProperty<EventHandler<WorkerStateEvent>> onCancelledProperty
每当任务状态转换到CANCELED状态时,都会调用onCancelled事件处理程序。- 从以下版本开始:
- JavaFX 2.1
- 另请参见:
-
getOnCancelled(),setOnCancelled(EventHandler)
-
onFailed
public final ObjectProperty<EventHandler<WorkerStateEvent>> onFailedProperty
每当任务状态转换到FAILED状态时,都会调用onFailed事件处理程序。- 从以下版本开始:
- JavaFX 2.1
- 另请参见:
-
getOnFailed(),setOnFailed(EventHandler)
-
-
方法详细信息
-
getState
public final Worker.State getState()
获取属性状态的值。
-
stateProperty
public final ReadOnlyObjectProperty<Worker.State> stateProperty()
说明从界面Worker复制获取表示当前状态的ReadOnlyObjectProperty。- Specified by:
-
stateProperty在接口Worker<V> - 另请参见:
-
getState()
-
getValue
public final V getValue()
获取属性值的值。
-
valueProperty
public final ReadOnlyObjectProperty<V> valueProperty()
说明从界面Worker复制获取表示值的ReadOnlyObjectProperty。- Specified by:
-
valueProperty在接口Worker<V> - 另请参见:
-
getValue()
-
getException
public final Throwable getException()
获取属性异常的值。- Specified by:
-
getException在接口Worker<V> - Property description:
- 结果
- 例外,如果发生
-
exceptionProperty
public final ReadOnlyObjectProperty<Throwable> exceptionProperty()
描述从接口Worker复制获取表示发生的任何异常的ReadOnlyObjectProperty。- Specified by:
-
exceptionProperty接口Worker<V> - 另请参见:
-
getException()
-
getWorkDone
public final double getWorkDone()
获取属性workDone的值。- Specified by:
-
getWorkDone在接口Worker<V> - Property description:
- 结果
- 完成的工作量
- 另请参见:
-
Worker.totalWorkProperty(),Worker.progressProperty()
-
workDoneProperty
public final ReadOnlyDoubleProperty workDoneProperty()
描述从接口Worker复制获取表示当前进度的ReadOnlyDoubleProperty。- Specified by:
-
workDoneProperty在接口Worker<V> - 另请参见:
-
getWorkDone()
-
getTotalWork
public final double getTotalWork()
获取属性totalWork的值。- Specified by:
-
getTotalWork在接口Worker<V> - Property description:
- 结果
- 要完成的工作
- 另请参见:
-
Worker.workDoneProperty(),Worker.progressProperty()
-
totalWorkProperty
public final ReadOnlyDoubleProperty totalWorkProperty()
说明从界面Worker复制获取ReadOnlyDoubleProperty代表需要完成的最大工作量。 这些“工作单位”对Worker实现有意义,例如需要下载的字节数或要处理的图像数量或某种其他此类度量。- Specified by:
-
totalWorkProperty在接口Worker<V> - 另请参见:
-
getTotalWork()
-
getProgress
public final double getProgress()
获取属性进度的值。- Specified by:
-
getProgress在接口Worker<V> - Property description:
- 结果
- 当前进展
- 另请参见:
-
Worker.workDoneProperty(),Worker.totalWorkProperty()
-
progressProperty
public final ReadOnlyDoubleProperty progressProperty()
描述从接口Worker复制获取表示进度的ReadOnlyDoubleProperty。- Specified by:
-
progressProperty在接口Worker<V> - 另请参见:
-
getProgress()
-
isRunning
public final boolean isRunning()
获取运行的属性的值。
-
runningProperty
public final ReadOnlyBooleanProperty runningProperty()
描述从接口Worker复制获取表示Worker正在运行的ReadOnlyBooleanProperty。- Specified by:
-
runningProperty在接口Worker<V> - 另请参见:
-
isRunning()
-
getMessage
public final String getMessage()
获取属性消息的值。- Specified by:
-
getMessage在接口Worker<V> - Property description:
- 结果
- 当前的消息
-
messageProperty
public final ReadOnlyStringProperty messageProperty()
说明从接口Worker复制获取表示消息的ReadOnlyStringProperty。- Specified by:
-
messageProperty在接口Worker<V> - 另请参见:
-
getMessage()
-
getTitle
public final String getTitle()
获取属性标题的值。
-
titleProperty
public final ReadOnlyStringProperty titleProperty()
说明从接口Worker复制获取表示标题的ReadOnlyStringProperty。- Specified by:
-
titleProperty在接口Worker<V> - 另请参见:
-
getTitle()
-
setExecutor
public final void setExecutor(Executor value)
设置属性执行器的值。- Property description:
- 执行者用于运行此服务。 如果没有指定执行程序,则将创建一个新的守护程序线程,并使用一些默认执行程序运行该服务。
-
getExecutor
public final Executor getExecutor()
获取属性执行器的值。- Property description:
- 执行者用于运行此服务。 如果没有指定执行程序,则将创建一个新的守护程序线程,并使用一些默认执行程序运行该服务。
-
executorProperty
public final ObjectProperty<Executor> executorProperty()
执行者用于运行此服务。 如果没有指定执行程序,则将创建一个新的守护程序线程,并使用一些默认执行程序运行该服务。- 另请参见:
-
getExecutor(),setExecutor(Executor)
-
onReadyProperty
public final ObjectProperty<EventHandler<WorkerStateEvent>> onReadyProperty()
每当任务状态转换到READY状态时,都会调用onReady事件处理程序。- 从以下版本开始:
- JavaFX 2.1
- 另请参见:
-
getOnReady(),setOnReady(EventHandler)
-
getOnReady
public final EventHandler<WorkerStateEvent> getOnReady()
每当任务状态转换到READY状态时,都会调用onReady事件处理程序。- 结果
- onReady事件处理程序(如果有)
- 从以下版本开始:
- JavaFX 2.1
-
setOnReady
public final void setOnReady(EventHandler<WorkerStateEvent> value)
每当任务状态转换到READY状态时,都会调用onReady事件处理程序。- 参数
-
value- 事件处理程序可以为空清除它 - 从以下版本开始:
- JavaFX 2.1
-
ready
protected void ready()
对于子类的受保护的便利方法,在服务状态已转换到READY状态时调用。 该方法在服务完全转换到新状态后被调用。- 从以下版本开始:
- JavaFX 2.1
-
onScheduledProperty
public final ObjectProperty<EventHandler<WorkerStateEvent>> onScheduledProperty()
每当任务状态转换到SCHEDULED状态时,调用onSchedule事件处理程序。- 从以下版本开始:
- JavaFX 2.1
- 另请参见:
-
getOnScheduled(),setOnScheduled(EventHandler)
-
getOnScheduled
public final EventHandler<WorkerStateEvent> getOnScheduled()
每当任务状态转换到SCHEDULED状态时,调用onSchedule事件处理程序。- 结果
- onScheduled事件处理程序(如果有的话)
- 从以下版本开始:
- JavaFX 2.1
-
setOnScheduled
public final void setOnScheduled(EventHandler<WorkerStateEvent> value)
每当任务状态转换到SCHEDULED状态时,调用onSchedule事件处理程序。- 参数
-
value- 事件处理程序,可以为空清除它 - 从以下版本开始:
- JavaFX 2.1
-
scheduled
protected void scheduled()
每当该服务的状态已转换到SCHEDULED状态时调用的子类的受保护的便利方法。 该方法在服务完全转换到新状态后被调用。- 从以下版本开始:
- JavaFX 2.1
-
onRunningProperty
public final ObjectProperty<EventHandler<WorkerStateEvent>> onRunningProperty()
每当任务状态转换到RUNNING状态时,都会调用onRunning事件处理程序。- 从以下版本开始:
- JavaFX 2.1
- 另请参见:
-
getOnRunning(),setOnRunning(EventHandler)
-
getOnRunning
public final EventHandler<WorkerStateEvent> getOnRunning()
每当任务状态转换到RUNNING状态时,都会调用onRunning事件处理程序。- 结果
- onRunning事件处理程序(如果有的话)
- 从以下版本开始:
- JavaFX 2.1
-
setOnRunning
public final void setOnRunning(EventHandler<WorkerStateEvent> value)
每当任务状态转换到RUNNING状态时,都会调用onRunning事件处理程序。- 参数
-
value- 事件处理程序,可以为空清除它 - 从以下版本开始:
- JavaFX 2.1
-
running
protected void running()
每当该服务的状态已经转换到RUNNING状态时,调用子类的受保护的便利方法。 该方法在服务完全转换到新状态后被调用。- 从以下版本开始:
- JavaFX 2.1
-
onSucceededProperty
public final ObjectProperty<EventHandler<WorkerStateEvent>> onSucceededProperty()
每当任务状态转换到SUCCEEDED状态时,调用onSucceeded事件处理程序。- 从以下版本开始:
- JavaFX 2.1
- 另请参见:
-
getOnSucceeded(),setOnSucceeded(EventHandler)
-
getOnSucceeded
public final EventHandler<WorkerStateEvent> getOnSucceeded()
每当任务状态转换到SUCCEEDED状态时,调用onSucceeded事件处理程序。- 结果
- onSucceeded事件处理程序(如果有)
- 从以下版本开始:
- JavaFX 2.1
-
setOnSucceeded
public final void setOnSucceeded(EventHandler<WorkerStateEvent> value)
每当任务状态转换到SUCCEEDED状态时,调用onSucceeded事件处理程序。- 参数
-
value- 事件处理程序,可以为空清除它 - 从以下版本开始:
- JavaFX 2.1
-
succeeded
protected void succeeded()
对于子类的受保护的便利方法,当服务状态已转换到SUCCEEDED状态时调用。 该方法在服务完全转换到新状态后被调用。- 从以下版本开始:
- JavaFX 2.1
-
onCancelledProperty
public final ObjectProperty<EventHandler<WorkerStateEvent>> onCancelledProperty()
每当任务状态转换到CANCELED状态时,都会调用onCancelled事件处理程序。- 从以下版本开始:
- JavaFX 2.1
- 另请参见:
-
getOnCancelled(),setOnCancelled(EventHandler)
-
getOnCancelled
public final EventHandler<WorkerStateEvent> getOnCancelled()
每当任务状态转换到CANCELED状态时,都会调用onCancelled事件处理程序。- 结果
- onCancelled事件处理程序(如果有)
- 从以下版本开始:
- JavaFX 2.1
-
setOnCancelled
public final void setOnCancelled(EventHandler<WorkerStateEvent> value)
每当任务状态转换到CANCELED状态时,都会调用onCancelled事件处理程序。- 参数
-
value- 事件处理程序,可以为空清除它 - 从以下版本开始:
- JavaFX 2.1
-
cancelled
protected void cancelled()
对于子类的受保护的便利方法,只要服务状态已经转换到CANCELED状态就调用。 该方法在服务完全转换到新状态后被调用。- 从以下版本开始:
- JavaFX 2.1
-
onFailedProperty
public final ObjectProperty<EventHandler<WorkerStateEvent>> onFailedProperty()
每当任务状态转换到FAILED状态时,都会调用onFailed事件处理程序。- 从以下版本开始:
- JavaFX 2.1
- 另请参见:
-
getOnFailed(),setOnFailed(EventHandler)
-
getOnFailed
public final EventHandler<WorkerStateEvent> getOnFailed()
每当任务状态转换到FAILED状态时,都会调用onFailed事件处理程序。- 结果
- onFailed事件处理程序(如果有)
- 从以下版本开始:
- JavaFX 2.1
-
setOnFailed
public final void setOnFailed(EventHandler<WorkerStateEvent> value)
每当任务状态转换到FAILED状态时,都会调用onFailed事件处理程序。- 参数
-
value- 事件处理程序,可以为空清除它 - 从以下版本开始:
- JavaFX 2.1
-
failed
protected void failed()
对于子类的受保护的便利方法,只要服务状态已经转换到FAILED状态。 该方法在服务完全转换到新状态后被调用。- 从以下版本开始:
- JavaFX 2.1
-
cancel
public boolean cancel()
取消任何当前正在运行的任务(如果有)。 状态将被设置为CANCELED。
-
restart
public void restart()
取消任何当前正在运行的任务(如果有),并重新启动此服务。 执行前状态将重置为READY。 该方法只能在FX应用程序线程上调用。
-
reset
public void reset()
重置服务。 只能在其中一个完成状态(即,已成功,失败或已取消)或READY时被调用。 该方法只能在FX应用程序线程上调用。
-
start
public void start()
启动此服务。 该服务必须处于就绪状态才能在此呼叫中成功。 该方法只能在FX应用程序线程上调用。
-
executeTask
protected void executeTask(Task<V> task)
使用此服务上定义的
executor执行给定的任务。 如果executor为空,则使用默认执行程序,该执行程序将创建一个新的守护程序线程,以执行此任务。此方法仅用于由Service实现调用。
- 参数
-
task- 要执行的非空任务 - 从以下版本开始:
- JavaFX 2.1
-
addEventHandler
public final <T extends Event> void addEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
注册一个事件处理程序到这个任务。 首先处理任何事件过滤器,然后处理指定的onFoo事件处理程序,最后处理通过此方法注册的任何事件处理程序。 与场景图中的其他事件一样,如果事件被消耗,则不会继续调度。- 参数类型
-
T- 处理程序的特定事件类 - 参数
-
eventType- 处理程序接收的事件的类型 -
eventHandler- 要注册的处理程序 - 异常
-
NullPointerException- 如果事件类型或处理程序为空 - 从以下版本开始:
- JavaFX 2.1
-
removeEventHandler
public final <T extends Event> void removeEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
从此任务中注销先前注册的事件处理程序。 一个处理程序可能已被注册用于不同的事件类型,因此调用者需要指定特定的事件类型,从中注销处理程序。- 参数类型
-
T- 处理程序的特定事件类 - 参数
-
eventType- 要注销的事件类型 -
eventHandler- 要注销的处理程序 - 异常
-
NullPointerException- 如果事件类型或处理程序为空 - 从以下版本开始:
- JavaFX 2.1
-
addEventFilter
public final <T extends Event> void addEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)
将事件过滤器注册到此任务。 注册事件过滤器在任何关联的事件处理程序之前获取事件。- 参数类型
-
T- 过滤器的特定事件类 - 参数
-
eventType- 过滤器接收的事件的类型 -
eventFilter- 要注册的过滤器 - 异常
-
NullPointerException- 如果事件类型或过滤器为空 - 从以下版本开始:
- JavaFX 2.1
-
removeEventFilter
public final <T extends Event> void removeEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)
从此任务中注销先前注册的事件过滤器。 一个过滤器可能已被注册用于不同的事件类型,因此调用者需要指定特定的事件类型,从中注销过滤器。- 参数类型
-
T- 过滤器的特定事件类 - 参数
-
eventType- 要注销的事件类型 -
eventFilter- 要注销的过滤器 - 异常
-
NullPointerException- 如果事件类型或过滤器为空 - 从以下版本开始:
- JavaFX 2.1
-
setEventHandler
protected final <T extends Event> void setEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
设置要用于此事件类型的处理程序。 一次只能有一个这样的处理程序。 这个处理程序被保证被首先调用。 这用于注册用户定义的onFoo事件处理程序。- 参数类型
-
T- 处理程序的特定事件类 - 参数
-
eventType- 与给定eventHandler关联的事件类型 -
eventHandler- 要注册的处理程序,或者取消注册为null - 异常
-
NullPointerException- 如果事件类型为空 - 从以下版本开始:
- JavaFX 2.1
-
fireEvent
protected final void fireEvent(Event event)
触发指定的事件。 遇到的任何事件过滤器将被通知并可以使用该事件。 如果没有被过滤器使用,则会通知此任务上的事件处理程序。 如果这些也不消耗事件,那么所有事件处理程序都被调用,并且可以使用该事件。必须在FX用户线程上调用此方法。
- 参数
-
event- 事件发生 - 从以下版本开始:
- JavaFX 2.1
-
buildEventDispatchChain
public EventDispatchChain buildEventDispatchChain(EventDispatchChain tail)
描述从接口EventTarget复制为此目标构建事件调度链。 事件调度链包含可能对处理针对EventTarget的事件感兴趣的事件调度EventTarget。 此事件目标不会自动添加到链中,因此如果要处理事件,则需要为链接添加一个EventDispatcher。在事件目标是某些层次结构的一部分的情况下,它的链通常是从从层次结构的根被收集到事件目标的事件分派器构建的。
事件调度链是通过修改提供的初始事件调度链来构建的。 返回的链应该在其末端具有初始链,所以调度员应该放在初始链上。
调用者不应该假定初始链条保持不变,也不会返回值引用不同的链。
- Specified by:
-
buildEventDispatchChain在接口EventTarget - 参数
-
tail- 从...建立的初始链 - 结果
- 此目标的结果事件调度链
-
createTask
protected abstract Task<V> createTask()
在JavaFX应用程序主题上启动服务后调用。 实现应该在创建任务之前将任何状态保存到最终变量中,因为在任务的后台线程代码中访问服务上定义的属性将导致异常。 例如:protected Task createTask() { final String url = myService.getUrl(); return new Task<String>() { protected String call() { URL u = new URL("http://www.oracle.com"); BufferedReader in = new BufferedReader( new InputStreamReader(u.openStream())); String result = in.readLine(); in.close(); return result; } } }如果Task是一个预定义的类(而不是匿名类),并且如果遵循推荐的最佳实践,那么在构建Task之前不需要保存状态,因为它的状态是完全提供的它的构造函数。
protected Task createTask() { // This is safe because getUrl is called on the FX Application // Thread and the FirstLineReaderTasks stores it as an // immutable property return new FirstLineReaderTask(myService.getUrl()); }- 结果
- 执行任务
-
-