如何将AsyncTask从Android移植到java?

2022-09-02 10:00:34

AsyncTask对于在UI线程和Android中的其他线程之间进行同步非常有用。因此,我已经阅读了它的源代码并尝试移植到java classic(JDK),但没有成功,因为Java中不存在某些类(Message,Handler..)。
我想创建一个带有一些有用函数的类,如AsyncTask(可以在主线程和其他线程之间同步):

    doInBackground(Params... params)
    onProgressUpdate(Progress... values)
    onPostExecute(Result result)
    publishProgress(Progress... values)
    onPreExecute()
    onCancelled()

有没有办法尝试一下?


答案 1

同意这是最直接的模拟SwingWorkerAsyncTask

如果您没有使用 Swing,另一个选项是:http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.htmlThreadPoolExecutor

下面是一篇演示如何使用生成多个后台线程的文章:http://www.javacodegeeks.com/2013/01/java-thread-pool-example-using-executors-and-threadpoolexecutor.htmlThreadPoolExecutor

生成一个无需进度更新即可运行和完成的单个后台线程(这也是 Android 中的常见用法),可以很简单:AsyncTask

Executors.newSingleThreadExecutor().execute(new Runnable() {
  @Override
  public void run() {
    // do stuff in background
  }
});

答案 2

1.是专门为Android开发的,用于同步UI线程和非UI线程,也称为无痛线程.....AsyncTask

2. Java 中有一个 AsyncTask 的替代方法,名为 .SwingWorker

请参阅此链接以获取一个很好的基础教程:

http://kodejava.org/how-do-i-use-swingworker-to-perform-background-tasks/


推荐