多线程之FutureTask

图片.png

从关系图可以看出FutureTask可以当作一个Runnable被线程执行。
Future构造器

public FutureTask(Callable<V> callable) {
}
public FutureTask(Runnable runnable, V result) {
}

示例:

class Runner implements Callable{


    @Override
    public String call() throws Exception {
        return Thread.currentThread().getName()+".call";
    }
}
public class Ttttt {
    public static void main(String[] args) {
        ExecutorService executor = Executors.newCachedThreadPool();
        Runner runner = new Runner();
        FutureTask<String> ft = new FutureTask<String>(runner);
        Future<?> result = executor.submit(ft);
        executor.shutdown();
        try {
            System.out.println(ft.get());
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容