用Callable创建线程
实现Callable接口,重写call()方法,用线程池调用
package dayThread;
import java.util.concurrent.*;
/**
* @Author 卫宏哲
* @Date 2020/9/7 10:10
* @Version 1.0
*/
/**
*使用线程池 运行Callable接口实现类中的方法
* call,获取返回值
* 它是泛型接口 代表的是返回值类型
*/
public class Thread7 implements Callable<String> {
@Override
public String call() throws Exception {
return "Callable接口实现线程的创建!";
}
}
class Main{
public static void main(String[]args) throws ExecutionException, InterruptedException {
//创建线程池工厂类静态方法
ExecutorService es = Executors.newFixedThreadPool(2);
//用来接收返回值
Future<String> f = es.submit(new Thread7());
String s = f.get();
System.out.println(s);
}
}
最后说一下Callable和runable的区别:
1,callable的核心是call方法 ,允许返回值,runable的核心是run方法。没有返回值。
2,call方法可以抛异常,但是run方法不行。
3,这两种方法都可以用于线程池,而thread类只支持runable。