线程3种实现方式比较
1、Runnable方式可以避免Thread方式由于Java单继承特性带来的缺陷,可以实现多个接口,但是只能继承一个父类
2、Runnable可以被多个线程共享,适合于多个线程处理同一资源的情况
与 Runnable 相比,Callable 可以有返回值,返回值通过 FutureTask 进行封装。
public class MyCallable implements Callable<Integer> {
public Integer call() {
return 123;
}
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
MyCallable mc = new MyCallable();
FutureTask<Integer> ft = new FutureTask<>(mc);
Thread thread = new Thread(ft);
thread.start();
System.out.println(ft.get());
}