talosのプログラミング教室

Java Gold合格への道 ~並行処理・Callableインタフェース~

スポンサーリンク

こんにちは。たろすです。

今回は並行処理におけるCallableインタフェースについて説明します。

Callableインタフェースとは

マルチスレッドプログラミングで使われるRunnableインタフェースですが、Runnableインタフェースで定義されているrunメソッドは戻り値を返したり、例外をスローしたりできません。

戻り値を返したり、例外をスローしたりしたいときに使用するのがCallableインタフェースです。

Callableインタフェースで定義されているcallメソッドはそれらが可能です。

public class Main {
	public static void main(String[] args) {
		Callable<String> task = new Callable<String>() {
			public String call() throws Exception {
				return "call";
			}
		};

		try {
			ExecutorService executorService = Executors.newCachedThreadPool();
			Future<String> future = executorService.submit(task);
			System.out.println(future.get());
		} catch (Exception e) {
			e.getStackTrace();
		}
	}
}
call

Callableインタフェースを実装するタスクの実行にはExecutorServiceのsubmitメソッドを使用します。

submitの戻り値はFutureオブジェクトで、getメソッドによって中身(callメソッドの戻り値)を取得できます。

おわりに

今回は並行処理におけるCallableインタフェースについて説明しました。