Callable和Runnbale一样代表着是线程任务,区别在于Callable有返回值并且可以抛出异常。
创建并启动有返回值的线程的步骤如下:
- 创建Callable接口的实现类,并实现call()方法,该call()方法将作为线程执行体,并且该call()方法有返回值。
- 将Callable实例传入FutureTask类。
- 使用FutureTask对象作为Thread对象的target创建并启动新线程。
- 调用FutureTask对象的get()方法来获得子线程结束后的返回值。
示例代码:
MyCallable类:
public class MyCallable implements Callable<Integer>{
public Integer call() throws Exception {
int sum = 0;
for (int i = 0; i < 100; i++) {
System.out.println(Thread.currentThread().getName()+"--->"+i);
sum ++;
}
return sum;
}
}
Main类:
public class Main {
public static void main(String[] args) throws Exception {
System.out.println("----------Callable测试----------