如何将AsyncTask从Android移植到Java?

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

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

有什么办法可以尝试吗?

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

2. Java中有一个名为SwingWorker的AsyncTask。

看到这个链接一个很好的基本教程:

http://kodejava.org/how-do-i-use-swingworker-to-perform-b​​ackground-tasks/

同意SwingWorker是最直接的模拟AsyncTask

如果您不使用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 } }); 

我使用Observerdevise模式来处理类似的情况。 产生后台线程后,主线程进入睡眠模式。 当后台线程完成asynchronous任务时,它会用一个callback消息唤醒主线程。 这基本上删除了正在等待callback的同步对象上的块。