概述

SwingWorker用于在UI程序中创建后台程序,处理耗时操作,如数据加载、数据运算等,防止因耗时操作导致UI界面卡死等。 SwingWorker实现了线程间通信。其创建的线程,可向外传递数据,更新UI。

SwingWorker简析

  1. SwingWorker<T, V>通常通过被继承,实现其所需的方法,通过new创建,调用execute()启动新线程; T是doInBackground()和get()方法的返回类型;V是publish()和process()方法要处理的数据类型;
  2. doInBackground(): 属于新线程;
  3. publish(T): 属于新线程,在doInBackground()中调用,向外传递数据的方法;
  4. process(T): 属于UI线程,用于接收新线程中publish传递的数据的方法,可在该方法中更新UI;
  5. done(): 属于UI线程,doInBackground()执行结束后,该方法被调用;可在该方法中调用get()方法获取新线程(既doInBackground()方法)的返回值,更新UI;
  6. cancel(): 属于UI线程,用于取消正在执行的SwingWorker线程;
  7. setProgress(int): 属于新线程,在doInBackground()中调用,向外传递新线程工作的进度值;
  8. getProgress(): 属于UI线程,用于获取新线程中通过setProgress(int)传递出来的进度值;