Java 中的 Callable 和 Future17 Mar 2025 | 5 分钟阅读 在 Java 中,Callable 和 Future 是与线程相关的两个最重要的概念。在本节中,我们将了解如何在我们的代码中使用 Callable 和 Future。 Future 用于存储从不同线程接收到的结果,而 Callable 与 Runnable 类似,它封装了一个将在另一个线程上运行的任务。 ![]() 让我们通过示例逐一理解它们。 Callable 接口Java 提供了两种创建线程的方式,即通过扩展 Thread 类和创建带有 Runnable 的线程。使用 Runnable 接口创建线程有一个缺点,即我们无法让线程在终止时返回结果,即当 run() 完成时。为了克服这个缺点,Java 提供了 Callable 接口。 Callable 和 Runnable 方法之间的两个主要区别如下:
注意:我们可以通过使用 Runnable 来创建线程,而不是通过使用 Callable。call() 方法的语法如下: public Object call() throws Exception; 让我们举一个例子来理解如何使用 Callable 接口: CallableInterfaceExample.java Future在 main() 方法中,call() 方法的返回值(完成后的)应该存储在一个对象中,以便了解线程返回的结果。为了在 main() 方法中存储返回的数据,我们使用 Future 对象。 Future 是我们可以跟踪来自其他线程的进度和结果的一种方式。我们需要重写五个方法来实现 Future 接口。cancel()、get() 和 isDone() 方法是 Future 接口中最重要的三个方法。 public boolean cancel(boolean mayInterrupt) cancel() 方法用于在任务尚未开始时停止任务。如果任务已开始,并且 mayInterrupt 布尔值为 true,它还将中断该任务。 public Object get() throws InterruptedException 该方法返回任务的结果。如果任务已完成,则立即返回结果;否则,它将等待其完成然后返回结果。 public boolean isDone() throws InterruptedException 它根据任务的完成情况返回一个布尔值。 注意:要创建线程,必须有一个 Runnable。注意:要获得结果,必须有一个 Future。让我们举一个例子来理解如何使用 Future 在 main() 方法中存储 call() 的返回结果: CallableFutureExample.java 输出 ![]() 让我们看另一个例子,在这个例子中我们将只使用 Runnable 接口。 RunnableExample.java 输出 ![]() |
在 Java 中,final 是一个关键字。它是一个非访问修饰符。这意味着它限制了变量、方法和类的修改。它确保一旦将实体声明为 final,它就可以被赋值和定义一次。另一方面,引用...
7 分钟阅读
在本节中,我们将学习什么是矩形数,并创建 Java 程序来检查给定的数字是否为矩形数。矩形数程序经常出现在 Java 编码面试和学术界。矩形数一个矩形数是……
阅读 3 分钟
在 Java 编程领域,线程在实现任务并发执行方面起着至关重要的作用。线程是在单个进程内可以并发运行的轻量级子进程。Java 提供两种类型的线程:用户线程和守护线程。每种类型都有其独特的作用...
阅读 6 分钟
java.nio.DoubleBuffer 包含 hasArray() 函数。DoubleBuffer 类用于验证提供的缓冲区是否由可访问的浮点数组支持。如果可以访问该缓冲区的后备数组,它将返回 true;否则,它将返回 false。array() 和 arrayOffset()...
阅读 3 分钟
Java 提供了各种类和工具来管理不同的数据种类和过程。Number 类作为 Java 的数字包装类的超类,是基本类的一个示例。它包含用于转换、比较和对各种数字类型执行算术运算的方法...
阅读 6 分钟
?在 Java 中,注解是关于源代码的元数据。它们对 Java 程序的执行没有直接影响。Java 中的注解是在 JDK 5 中引入的。使用注解的主要目的是它向编译器提供指令...
阅读 4 分钟
问题陈述该任务涉及计算给定矩阵中所有升序或降序排列的行。如果一行中的所有元素都遵循既不递减(升序)也不递增的模式,则该行被视为已排序。例如,[1,2,3,4] 是升序排列。关于...
阅读 4 分钟
当今的应用需要出色的并发管理以及可扩展性和快速响应能力。根据当今应用程序的要求,响应式编程已成为一种处理异步数据流的解决方案。这种方法允许应用程序与实时事件一起工作……
阅读 6 分钟
Java 是世界上最受欢迎的编程语言之一,以其多功能性和广泛的应用而闻名。Java 最强大的功能之一是其集合框架,它包含用于管理对象集合的类和接口。然而,在某些情况下,您必须将一个键链接到多个...
阅读 4 分钟
什么是?Spark是一个Java微框架,允许您快速创建Java 8 Web应用程序。Spark是一个轻量级且简单的Java Web框架,专为快速开发而设计。它受到了流行的Ruby微框架Sinatra的启发。Spark大量使用了……
阅读 8 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India