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

    Fields
    Modifier and Type
    Field
    Description
    protected boolean
     
    protected T
    最近一次更新数据
    protected PublicTask<T>
    任务对象
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected abstract T
    执行事件(非 FX 线程)
    static <T> void
    callbackReturn(com.imyeyu.java.bean.CallbackReturn<T> asyncCallback, com.imyeyu.java.bean.CallbackArg<T> finishCallback)
    快速构造异步任务
    protected javafx.concurrent.Task<T>
     
    void
    中断任务
    static void
    later(com.imyeyu.java.bean.Callback callback, long delay)
    快速构造稍后执行,触发事件属于 FX 线程
    protected void
    更新消息,非 FX 线程的 call 里触发,onMessage(String) 里视 UI 线程状态回调
    protected void
    发生异常(FX 线程)
    protected void
    线程完成监听,无论正常完成还是出现异常,都会触发此方法
    protected void
    完成事件(FX 线程,只要线程结束就会调用)
    protected void
    完成事件(FX 线程,只要线程结束就会调用,参数为 update(T)call() 最后一次更新值)
    protected void
    更新消息
    protected void
    onProgress(double progress)
    更新进度事件,progress(double) 触发,属于 FX 线程
    protected void
    数据更新事件,update(T)call() 返回参数触发,属于 FX 线程
    protected void
    progress(double progress)
    主动更新进度,非 FX 线程的 call 里触发,onProgress(double) 里视 UI 线程状态回调
    static void
    run(com.imyeyu.java.bean.Callback callback)
    快速构造异步任务
    static void
    run(com.imyeyu.java.bean.Callback asyncCallback, com.imyeyu.java.bean.Callback finishCallback)
    快速构造异步任务
    static void
    run(com.imyeyu.java.bean.Callback asyncCallback, com.imyeyu.java.bean.CallbackArg<Throwable> exceptionCallback)
    快速构造异步任务
    protected void
    update(T t)
    主动更新数据,通常是非 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

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • task

      protected PublicTask<T> task
      任务对象
    • lastT

      protected T lastT
      最近一次更新数据
    • isInterrupted

      protected boolean isInterrupted
  • Constructor Details

    • RunAsync

      public RunAsync()
  • Method Details

    • createTask

      protected javafx.concurrent.Task<T> createTask()
      Specified by:
      createTask in class javafx.concurrent.Service<T>
    • call

      protected abstract T call() throws Exception
      执行事件(非 FX 线程)
      Returns:
      处理结果
      Throws:
      Exception - 处理异常
    • update

      protected void update(T t)
      主动更新数据,通常是非 FX 线程的 call 里触发,onUpdate(T) 里视 UI 线程状态回调
      Parameters:
      t - 更新值
    • progress

      protected void progress(double progress)
      主动更新进度,非 FX 线程的 call 里触发,onProgress(double) 里视 UI 线程状态回调
      Parameters:
      progress - 进度值
    • message

      protected void message(String msg)
      更新消息,非 FX 线程的 call 里触发,onMessage(String) 里视 UI 线程状态回调
      Parameters:
      msg - 消息
    • onUpdate

      protected void onUpdate(T t)
      数据更新事件,update(T)call() 返回参数触发,属于 FX 线程
      Parameters:
      t - 更新数据
    • onProgress

      protected void onProgress(double progress)
      更新进度事件,progress(double) 触发,属于 FX 线程
      Parameters:
      progress - 进度值
    • onMessage

      protected void onMessage(String msg)
      更新消息
      Parameters:
      msg - 消息
    • onFinish

      protected void onFinish()
      完成事件(FX 线程,只要线程结束就会调用)
    • onFinish

      protected void onFinish(T t)
      完成事件(FX 线程,只要线程结束就会调用,参数为 update(T)call() 最后一次更新值)
      Parameters:
      t - 执行事件返回值
    • onException

      protected void onException(Throwable e)
      发生异常(FX 线程)
      Parameters:
      e - 异常
    • 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 - 异步完成回调