java 创建线程 Callable
一、语法
1、与Runnable区别
a、可以throws异常
b、有返回值,call方法
2、过程
1、实现
Callable<引用类型或包装类>
2、重写
call 方法,返回值类型为上面 的引用类型或包装类
3、实例化线程类
4、添加上面的线程类
FutureTask<引用类或包装类> futureTask = new FutureTask<>(线程类);
5、new Thread,开启线程
Thread thread = new Thread(futureTask, "A"); thread.start();
6、获取返回值
futureTask.get()
二、案例
1、线程类
package com.wt.lock; import java.util.concurrent.Callable; public class Demon02Call implements Callable<Integer> { @Override public Integer call() throws Exception { return 100; } }
2、主类
package com.wt.lock; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class Demon02 { public static void main(String[] args) throws ExecutionException, InterruptedException { Demon02Call demon02Call = new Demon02Call(); FutureTask<Integer> futureTask = new FutureTask<>(demon02Call); // 创建thread对象,执行线程 Thread thread = new Thread(futureTask, "A"); thread.start(); // 获取返回值 Integer integer = futureTask.get(); System.out.println(integer); } }