Callable()
可以有返回值,可以抛出异常
Callable
通过Runnable
接口的实现类FetuerTask
调用线程
package com.sw.callable;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
/**
* @Author suaxi
* @Date 2021/2/12 21:24
*/
public class callableTest {
public static void main(String[] args) throws ExecutionException, InterruptedException {
MyThread thread = new MyThread();
FutureTask futureTask = new FutureTask(thread); //适配类
new Thread(futureTask,"A").start();
new Thread(futureTask,"B").start();
/*
call()方法测试
泛型的参数 = 方法的返回值
相同的两个线程运行后只返回一个结果(有缓存)
*/
Object o = futureTask.get(); //获取callable返回值,此处的get可能会产生阻塞,接收返回值时可能需要等待
System.out.println(o);
}
}
class MyThread implements Callable<String>{
@Override
public String call(){
System.out.println("call()方法测试");
return "泛型的参数 = 方法的返回值";
}
}
评论 (0)