其他分享
首页 > 其他分享> > 多线程第三种创建方式-Callable()

多线程第三种创建方式-Callable()

作者:互联网

@FunctionalInterface
public interface Callable返回结果并可能引发异常的任务。 实现者定义一个没有参数的单一方法,称为call 。
Callable接口类似于Runnable ,因为它们都是为其实例可能由另一个线程执行的类设计的。
然而,A Runnable不返回结果,也不能抛出被检查的异常。

该Executors类包含的实用方法,从其他普通形式转换为Callable类。

Thread类重载只有Runnable,如果想要Thread类识别Callable,Callable可以通过Runnable来连接Thread

public class CallableTestt {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        /*传统方式 new Thread(new MyThread()).start();*/
       // new Thread().start();

        MyThread1 thread=new MyThread1();
        //适配类
        FutureTask<Callable> futureTask = new FutureTask(thread);

        new Thread(futureTask,"A").start();
        new Thread(futureTask,"B").start(); //FutureTask只会被线程run一次所以只会产生一个call,与FutureTask类中的state关键字有关

        //futureTask.get()可能会产生阻塞
        String callable = String.valueOf(futureTask.get());

        System.out.println(callable);
    }
}
class MyThread implements Runnable{
    @Override
    public void run() {

    }
}
//Callable方法泛型参数等于方法的返回值
class MyThread1 implements Callable<String> {

    @Override
    public String call() throws Exception {
        System.out.println("call");
        return "123";
    }
}

标签:Runnable,Thread,第三种,Callable,futureTask,new,多线程,public
来源: https://www.cnblogs.com/Liuyunsan/p/15797487.html