前提・実現したいこと
Javaの講師をしています。ExecutorsのcallableメソッドでRunnableオブジェクトをCallableオブジェクトに変換できます。
これが何のためにあるのか説明したいです。
発生している問題・エラーメッセージ
しかも、元々のRunnableオブジェクトは当然、戻り値を持ちません。callableメソッドは第二引数に返すべき戻り値を指定するようになっています。ますます、何のためにあるのかわかりません。
該当のソースコード
Java
import java.util.Date;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
class Sample11_14 {
public static void main(String[] args) {
Callable<Date> call = Executors.callable(new ThreadA(), new Date());
ExecutorService ex = Executors.newSingleThreadExecutor();
System.out.println("Start : " + new Date());
Future<Date> future = ex.submit(call);
try {
Date date = future.get();
System.out.println("End : " + date);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
ex.shutdown();
}
}
class ThreadA implements Runnable {
public void run() {
System.out.println("ThreadA :");
}
}
試したこと
Executorsのcallableメソッドについては、ネットで検索しましたが、ヒットしません。Amazonでも書籍検索しましたが、適当なものがなさそうです。
補足情報(FW/ツールのバージョンなど)
Java8
あなたの回答
tips
プレビュー