目次へ

2005.12.14 株式会社四次元データ 宮澤了祐

8.2. Callableインタフェース

JDK5.0より、新たにjava.util.concurrent.Callableインタフェースが追加されました。 Runnableとは違い、値を返したり例外を投げることが出来ます。

ExecutorServiceのsubmit()メソッドにより、Callableタスクを送信します。

import java.util.Date;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import java.util.concurrent.Executors;

public class MyCallableTask implements Callable<Date> {
    public Date call() throws Exception {
        Thread.sleep(1000);
        return new Date();
    }
    
    public static void main(String[] args){
        ExecutorService ex = Executors.newSingleThreadExecutor();
        Future<Date> future = ex.submit(new MyCallableTask());
        try {
             Date date = future.get();
             System.out.println(date);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
        ex.shutdown();
    }
}

現在の時刻を返すタスクを設定します。 ExecutorServiceのsubmit()メソッドの返り値はFutureオブジェクトです。 Futureのget()メソッドによって、指定した型で値が返って来ます。 get()メソッドは、値が返ってくるまで待機します。 次のような形で出力されれば成功です。

Tue Jul 26 21:07:01 JST 2005

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp