Callable接口 JUC并发编程

Callable接口

FutureTask使用Callable接口 并且实现了RunnableFuture
在这里插入图片描述
在这里插入图片描述
RunnableFuture继承了Runnable
在这里插入图片描述
Thread实现了Runnable接口
在这里插入图片描述

使用Callable 却调用的是FutureTask

public class CallableTest {
    
    

	public static void main(String[] args) {
    
    
		MyThread myThread = new MyThread();
		
		//适配类
		FutureTask<String> futureTask = new FutureTask<>(myThread);
		try {
    
    
			new Thread(futureTask).start();
			
			//get这个方法可能会产生阻塞,一般把他放到最后
			//或者使用异步通信的方式处理
			String string = futureTask.get();
			
			//Callable的返回结果
			System.out.println(string);
		} catch (Exception e) {
    
    
			e.printStackTrace();
		}
	}
}

class MyThread implements Callable<String>{
    
    

	@Override
	public String call() throws Exception {
    
    
		System.out.println("Callable");
		return "2333";
	}
}

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

总结

1.有缓存
2.结果可能需要等待,会阻塞

猜你喜欢

转载自blog.csdn.net/jj89929665/article/details/112968179