Java CallableとFutureの実装はJVMのどこにありますか?
Future
インターフェイスの主な実装はFutureTask
クラスです。ExecutorService
送信されたジョブなどを表すため にクラスによって使用されます。 Callable
(のようにRunnable
)は、自分で実装する単純なインターフェースです。ExecutorService
スレッドプールで実行するタスクをラップします。これらのクラスのソースjarをダウンロードして、Javaコードを自分で確認する必要があります。
これらのクラスには、JVMのブラックマジックなどは含まれていません。たとえば、Callable
クラスを作成する場合、スレッドプールに送信しない限り、クラスは別のスレッドで実行されません。Callable
スレッドとは関係のないさまざまな場所で使用できます。
JVMの「黒魔術」は周りFuture
にあり、Callable
ほとんどがThread
クラスに含まれています。OSスレッドと連携して、別のスレッドでタスクを実行する実際のジョブを実行する、基盤となるネイティブサポートがあります。それが何をするのかを見たいのであれば、まだたくさんのJavaコードがありますが、本当の魔法であるネイティブとOSの呼び出しがあります。
これは、1.5でJavaに追加されたエグゼキュータサービスの使用方法に関する優れたチュートリアルです。