FutureTaskのソースコード解析

ExecutorServiceを介してCallableやRunnableタスクをスレッドプールに提出し、その結果を待機またはキャンセルするためのFutureオブジェクトを取得することができます。 public interface ExecutorService extends Executor { ... <T> Future<T> submit(Callable<T> task); <T> Future<T> submit(Runnable task, T result); Future<?& ...

6月21日 01:01 投稿

Javaにおけるスレッド生成パターンの実践ガイド

Thread クラスを継承する方法 class PrimeCounter extends Thread { @Override public void run() { System.out.println("スレッド名: " + Thread.currentThread().getName()); } } public static void main(String[] args) { PrimeCounter counter = new PrimeCounter(); counter.start(); } Runnable インターフェースを実装する方法 cla ...

6月5日 17:28 投稿

JavaにおけるCallableとFutureTaskを活用したスレッド実装と戻り値の取得

Threadクラスの継承やRunnableインタフェースの実装といった従来のアプローチでは、run()メソッドがvoidを返す仕様であるため、並列処理の結果を呼び出し元で直接受け取ることができません。計算結果やデータ取得処理を非同期で実行しつつ、その戻り値を主スレッドで利用したい場合、CallableおよびFuture(実運用ではFutureTaskを経由)を利用する方式が標準的です。この ...

5月20日 14:08 投稿

Javaの高並行処理:Callableインターフェースによるスレッド作成手法

これまでスレッドを作成する方法として、Threadクラスの継承やRunnableインターフェースの実装があることを学んできました。 ここでは、新しいスレッド作成手段としてCallableインターフェースについて説明します。まず、RunnableインターフェースとCallableインターフェースの違いを比較しましょう。 それぞれのインターフェースを実装したクラスを定義します: // Runnab ...

5月19日 04:06 投稿