Class RunAsync<T>
java.lang.Object
javafx.concurrent.Service<T>
com.imyeyu.fx.task.RunAsync<T>
- Type Parameters:
T- 数据处理返回类型
- All Implemented Interfaces:
javafx.concurrent.Worker<T>, javafx.event.EventTarget
- Direct Known Subclasses:
RunAsyncDaemon
public abstract class RunAsync<T>
extends javafx.concurrent.Service<T>
异步线程执行,常用的构建异步线程任务
// 快速构造
RunAsync.run(() -> {}); // 快速异步执行 run(Callback)
RunAsync.run(() -> {}, () -> {}); // 快速异步回调 run(Callback, Callback)
RunAsync.run(() -> 100, v -> {}); // 快速异步返回 callbackReturn(CallbackReturn, CallbackArg)
RunAsync.later(() -> {}, 1000); // 延时一秒执行 later(Callback, long)
// 标准构造
new RunAsync<T>() {
@Override
protected T call() throws Exception {
// 这里不是 FX 线程,可以执行一些长时间的事情
update(new T()); // 主动更新数据
progress(.6); // 更新进度
return new T(); // 返回更新数据
}
@Override
protected void onUpdate(T t) {
// 数据更新事件,属于 FX 线程,视 UI 线程状态回调
}
@Override
protected void onUpdateProgress(double progress) {
// 更新进度事件,属于 FX 线程,视 UI 线程状态回调
}
@Override
protected void onFinish() {
// 线程执行完成,属于 FX 线程
}
@Override
protected void onException(Throwable e) {
// 线程异常,属于 FX 线程
}
}.start(); <-- 千万别忘了启动任务
- Since:
- 2021-02-13 12:56
- Author:
- 夜雨
-
Nested Class Summary
Nested classes/interfaces inherited from interface javafx.concurrent.Worker
javafx.concurrent.Worker.State -
Property Summary
Properties inherited from class javafx.concurrent.Service
exception, executor, message, onCancelled, onFailed, onReady, onRunning, onScheduled, onSucceeded, progress, running, state, title, totalWork, value, workDone -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected T最近一次更新数据protected PublicTask<T> 任务对象 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract Tcall()执行事件(非 FX 线程)static <T> voidcallbackReturn(com.imyeyu.java.bean.CallbackReturn<T> asyncCallback, com.imyeyu.java.bean.CallbackArg<T> finishCallback) 快速构造异步任务protected javafx.concurrent.Task<T> void中断任务static voidlater(com.imyeyu.java.bean.Callback callback, long delay) 快速构造稍后执行,触发事件属于 FX 线程protected void更新消息,非 FX 线程的 call 里触发,onMessage(String)里视 UI 线程状态回调protected void发生异常(FX 线程)protected void线程完成监听,无论正常完成还是出现异常,都会触发此方法protected voidonFinish()完成事件(FX 线程,只要线程结束就会调用)protected voidprotected void更新消息protected voidonProgress(double progress) 更新进度事件,progress(double)触发,属于 FX 线程protected voidprotected voidprogress(double progress) 主动更新进度,非 FX 线程的 call 里触发,onProgress(double)里视 UI 线程状态回调static voidrun(com.imyeyu.java.bean.Callback callback) 快速构造异步任务static voidrun(com.imyeyu.java.bean.Callback asyncCallback, com.imyeyu.java.bean.Callback finishCallback) 快速构造异步任务static voidrun(com.imyeyu.java.bean.Callback asyncCallback, com.imyeyu.java.bean.CallbackArg<Throwable> exceptionCallback) 快速构造异步任务protected void主动更新数据,通常是非 FX 线程的 call 里触发,onUpdate(T)里视 UI 线程状态回调Methods inherited from class javafx.concurrent.Service
addEventFilter, addEventHandler, buildEventDispatchChain, cancel, cancelled, exceptionProperty, executeTask, executorProperty, failed, fireEvent, getException, getExecutor, getMessage, getOnCancelled, getOnFailed, getOnReady, getOnRunning, getOnScheduled, getOnSucceeded, getProgress, getState, getTitle, getTotalWork, getValue, getWorkDone, isRunning, messageProperty, onCancelledProperty, onFailedProperty, onReadyProperty, onRunningProperty, onScheduledProperty, onSucceededProperty, progressProperty, ready, removeEventFilter, removeEventHandler, reset, restart, running, runningProperty, scheduled, setEventHandler, setExecutor, setOnCancelled, setOnFailed, setOnReady, setOnRunning, setOnScheduled, setOnSucceeded, start, stateProperty, succeeded, titleProperty, totalWorkProperty, valueProperty, workDoneProperty
-
Field Details
-
task
任务对象 -
lastT
最近一次更新数据 -
isInterrupted
protected boolean isInterrupted
-
-
Constructor Details
-
RunAsync
public RunAsync()
-
-
Method Details
-
createTask
-
call
-
update
-
progress
protected void progress(double progress) 主动更新进度,非 FX 线程的 call 里触发,onProgress(double)里视 UI 线程状态回调- Parameters:
progress- 进度值
-
message
更新消息,非 FX 线程的 call 里触发,onMessage(String)里视 UI 线程状态回调- Parameters:
msg- 消息
-
onUpdate
-
onProgress
protected void onProgress(double progress) 更新进度事件,progress(double)触发,属于 FX 线程- Parameters:
progress- 进度值
-
onMessage
-
onFinish
protected void onFinish()完成事件(FX 线程,只要线程结束就会调用) -
onFinish
-
onException
-
onFinally
protected void onFinally()线程完成监听,无论正常完成还是出现异常,都会触发此方法 -
interrupt
public void interrupt()中断任务 -
later
public static void later(com.imyeyu.java.bean.Callback callback, long delay) 快速构造稍后执行,触发事件属于 FX 线程- Parameters:
callback- 异步事件delay- 延时时间(毫秒)
-
run
public static void run(com.imyeyu.java.bean.Callback callback) 快速构造异步任务- Parameters:
callback- 异步回调
-
run
public static void run(com.imyeyu.java.bean.Callback asyncCallback, com.imyeyu.java.bean.Callback finishCallback) 快速构造异步任务- Parameters:
asyncCallback- 异步回调finishCallback- 异步完成回调
-
run
public static void run(com.imyeyu.java.bean.Callback asyncCallback, com.imyeyu.java.bean.CallbackArg<Throwable> exceptionCallback) 快速构造异步任务- Parameters:
asyncCallback- 异步回调exceptionCallback- 异常回调
-
callbackReturn
public static <T> void callbackReturn(com.imyeyu.java.bean.CallbackReturn<T> asyncCallback, com.imyeyu.java.bean.CallbackArg<T> finishCallback) 快速构造异步任务- Type Parameters:
T- 回调数据类型- Parameters:
asyncCallback- 异步回调finishCallback- 异步完成回调
-