java007

FutureTask类有什么作用?它实现了哪些接口? Callable接口和Runnable接口有什么不同?


1.在 Java 中为了编程异步事件,我们使用 Thread 类和 Runnable 接口,它们可以开发并行应用程序。问题是在执行结束时不能返回值。因此,添加了 FutureTaks,Future 和 Callable 类,它们与以前的类具有大致相同的功能,但极大地促进了并行应用程序的开发。由于线程 Thread 只支持 Runnable 构造,于是有了 Future 可以根据 Callable 构建线程。
由于 Future 只是一个接口,无法直接创建对象,因此有了 FutureTask 。
Future:封装并行调用的类,可以取消任务的执行,确定执行是否已成功完成或出错,以及其他操作;
FutureTask:这是 Future 接口的实现,将在并行调用中执行。
Callable:用于实现并行执行的接口。它与 Runnable 接口非常相似,但是它不返回任何值,而 Callable 必须在执行结束时返回一个值。
ExecutorService:用于在创建线程池,开始和取消管理并行执行的线程。

创建线程的3中方式 Thread、Runnable、Callable ,其中 Callable 是有返回结果的。

2.FutureTask实现的接口:Runnable,Callable,Future。

Callable接口和Runnable接口有什么不同?

不同点:
1.callable的核心是call方法,允许返回值,runnable的核心是run方法,没有返回值。
2.call方法可以抛出异常,但是run方法不行。
因为runnable是java1.1就有了,所以他不存在返回值,后期在java1.5进行了优化,就出现了callable,就有了返回值和抛异常。
3.callable和runnable都可以应用于executors。而thread类只支持runnable。

相同点:
1.两者都是接口。
2.两者都需要调用Thread.start()启动线程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴为您解答问题。 "ptal1-007 念数字" 是一个题目,要求编写一个程序,将输入的数字转换为对应的中文读音。以下是一个Java实现的示例代码: ```java import java.util.Scanner; public class Main { private static final String[] NUMBER_CN = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; private static final String[] UNIT_CN = {"", "拾", "佰", "仟", "万"}; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { int num = scanner.nextInt(); String result = convertToCN(num); System.out.println(result); } scanner.close(); } private static String convertToCN(int num) { if (num == 0) { return NUMBER_CN[0]; } StringBuilder sb = new StringBuilder(); int unitIndex = 0; boolean lastIsZero = true; while (num > 0) { int digit = num % 10; if (digit != 0) { sb.insert(0, UNIT_CN[unitIndex]); sb.insert(0, NUMBER_CN[digit]); lastIsZero = false; } else { if (!lastIsZero) { sb.insert(0, NUMBER_CN[digit]); } lastIsZero = true; } num /= 10; unitIndex += digit == 0 && unitIndex == 4 ? 0 : 1; } return sb.toString(); } } ``` 该程序使用Scanner读取输入的数字,然后调用convertToCN方法将其转换为中文读音。在convertToCN方法中,我们使用了两个数组,分别存储数字和单位对应的中文读音。我们采用了一种从低位向高位遍历的方法,每次取出个位数字,根据其值和所处的位数确定其对应的中文读音及单位。最后将所有的中文读音拼接起来即可得到最终结果。 希望这个回答对您有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值