Callable(简单)

1、可以有返回值
2、可以抛出异常
3、方法不同,run()/ call()

Callable(简单)

Callable(简单)

Callable(简单)

代码测试

package com.hudu.demo01.callable;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class CallableTest {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
//        new Thread(new MyThread()).start(); 类实现Runnable()接口

//        new Thread(new Runnable()).start();
//        new Thread(new FutureTask<V>()).start();//和上面等价,FutureTask是Runnable的实现类
//        new Thread(new FutureTask<V>(Callable)).start();//FutureTask又一个构造方法,参数是传入一个Callable

//        new Thread().start();//怎么启动Callable
        MyThread thread = new MyThread();
        //适配类
        FutureTask futureTask = new FutureTask(thread);
        new Thread(futureTask,"A").start();
        new Thread(futureTask,"B").start();//结果会被缓存,提高效率
        Integer o = (Integer)futureTask.get();//获取Callable的返回结果,这个get方法会产生阻塞!把它放到最后
        //或者使用异步通信处理
        System.out.println(o);
    }
}

//class MyThread implements Runnable{
//
//    @Override
//    public void run() {
//
//    }
//}

class MyThread implements Callable<Integer> {


    @Override
    public Integer call() throws Exception {
        System.out.println("call()");//会打印几个call
        return 12345;
    }
}

细节:
1、有缓存
2、结果可能需要等待,会阻塞

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!