Callable详解

在这里插入图片描述

public class CallableTest {
    
    
	public static void main(String[] args) throws ExecutionException, InterruptedException {
    
    
		// new Thread(new Runnable()).start();
		// new Thread(new FutureTask<V>()).start();
		// new Thread(new FutureTask<V>( Callable )).start();
		//new Thread().start(); // 怎么启动Callable
		MyThread thread = new MyThread();

		//这里创建一个适配类将Thread和Callable联系起来
		FutureTask futureTask = new FutureTask(thread); // 适配类
		new Thread(futureTask,"A").start();
		new Thread(futureTask,"B").start(); // 结果会被缓存,效率高
		//获取返回值
		Integer o = (Integer) futureTask.get(); //这个get 方法可能会产生阻塞!把他放到最后
		// 或者使用异步通信来处理!
		System.out.println(o);//1024
	}
} 


class MyThread implements Callable<Integer> {
    
    
		@Override
		public Integer call() {
    
    
		System.out.println("call()"); // 会打印几个call
		// 耗时的操作
		return 1024;
		}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45100361/article/details/112781705