AsyncTask

AsyncTaskクラス(android.os.AsyncTask)は任意のタスク(処理)をUIスレッドとバックグラウンドスレッドに分割して実行するためのクラスである。

AsyncTask - Android Developers

シングルスレッドモデルで動作するAndroidGUIアプリケーションを書く場合には殆ど必須といっても良いクラスだが、このクラス、既視感というか、どこかで使った記憶がある。

SwingWorker - Java Platform SE 6

JFC/Swingにある、同様の目的のために用意されたSwingWorkerというクラスがあるが、AsyncTaskはこのSwingWorkerに非常によく似ている。
executeメソッドに引数を指定できる点においてSwingWorkerよりも進んでいるが、ソースコードを見てみると基本的な使い方やメソッド、状態変数の持ち方までそっくりであり、AsyncTaskがSwingWorkerを元に書かれたのは間違いないだろう。

それにしても偉大なのはjava.util.concurrentパッケージ。もしこのパッケージの様々なクラスが無かったら(必要なものを全て自分で用意していたら)と思うと背筋が凍るというものだ。

改めてダグ・リー氏に敬意を表して読み直そうか。

Javaスレッドプログラミング―並列オブジェクト指向プログラミングの設計原理 (OO SELECTION) Javaスレッドプログラミング―並列オブジェクト指向プログラミングの設計原理/Doug Lea (原著), 松野 良蔵 (翻訳)
絶版になっているのは知っていたけど、未だにそうなのね。

Concurrent Programming in Java™: Design Principles and Pattern (Java Series) Concurrent Programming in Java(TM): Design Principles and Pattern (2nd Edition)
原著は2版がちゃんと出ているんだな。