java - 如何将 AsyncTask 从 Android 移植到 java?

标签 java android multithreading

AsyncTask对于在 Android 中的 UI 线程和其他线程之间进行同步非常有用。所以我读了它的source code并尝试移植到java经典(JDK)但没有成功,因为java中不存在某些类(消息,处理程序..)。
我想创建一个具有一些有用功能的类,例如 AsyncTask(可以在主线程和其他线程之间同步):

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

有什么办法可以试试吗?

最佳答案

同意 SwingWorkerAsyncTask

的最直接模拟

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

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

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

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

关于java - 如何将 AsyncTask 从 Android 移植到 java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11815306/

相关文章:

java - 如何使用泛型返回泛型类的类类型?

android - 如何以编程方式设置微调器的样式?

multithreading - Akka Actor 优先级

java - 获取线程的内存使用情况

滚动时 JavaFX TreeTableView 行消失

java - 按下任意键时如何清除文本字段?

java - 名称需要 LATIN 内部形式超过 30 个字节?

android - 如何根据 AVD 管理器中的设备定义从命令行创建 AVD?

android - 从我的应用程序接听来电

java - Scala 中有趣的线程行为