使用 FutrueTask 和 Callable 实现多线程

本文介绍了Java并发库(JUC)中Callable接口与FutureTask的使用,展示了如何通过Callable创建线程并计算1到100的和,以及FutureTask如何作为结果接收者。Future模式在此过程中起到异步处理和返回值传递的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 点睛

要创建一个线程,可以继承自 Thread 类,或者实现 Runnable 接口,但 JUC 还提供了另外一种方式,通过 Callable + FutureTask 创建并使用线程。

1 FutureTask 

Future 是 JDK 提供用于处理多线程环境异步问题的一种模式,而 FutrueTask 就是对 Future 模式的一种实现。下面通过一段对话来理解什么是“Futura 模式”。

老板:“小王,把会议纪要整理好给我。”

小王:“好的,没问题。”

随后,小王立刻开始整理,几分钟后,小王整理好的文件发送给老板。

以上场景,在多线程之中称为“Futura 模式”。当客户端(老板)向服务端(小王)发起一个请求时,服务端会立刻给客户端返回一个结果(好的,没问题。”),但实际任务并没有开始执行。客户端在拿到“假的”响应结果的同时,服务端才会去真正执行任务,并在任务处理完毕后,将真正的结果再返回给客户端(整理好的文件发送给老板。)。

Future 模式的处理流程如下:

Future 模式的最大好处就是客户端在发送出请求后,可以马上得到一个结果(假的结果),而不用一直等待着服务端来处理。

在使用 FutureTask 时,get() 方法就用于返回服务端真正处理后的真实值(RealData)。由于服务端不一定马上能处理完毕,因此在调用 get() 方法时会出现一定时间的阻塞(等待服务端处理完毕)。

2 Callable

Callable 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值