JDK API的定义:
A Future represents the result of an asynchronous computation. Methods are provided to check if the computation is complete, to wait for its completion, and to retrieve the result of the computation. The result can only be retrieved using method get when the computation has completed, blocking if necessary until it is ready. Cancellation is performed by the cancel method. Additional methods are provided to determine if the task completed normally or was cancelled. Once a computation has completed, the computation cannot be cancelled. If you would like to use a Future for the sake of cancellability but not provide a usable result, you can declare types of the form Future<?> and return null as a result of the underlying task.
相应的中文为:
Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。计算完成后只能使用 get 方法来获取结果,如有必要,计算完成前可以阻塞此方法。取消则由cancel 方法来执行。还提供了其他方法,以确定任务是正常完成还是被取消了。一旦计算完成,就不能再取消计算。如果为了可取消性而使用 Future 但又不提供可用的结果,则可以声明Future<?> 形式类型、并返回 null 作为底层任务的结果。
举例:
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class TestFutureTask {
public static void main(String[] args) throws InterruptedException,
ExecutionException {
final ExecutorService exec = Executors.newFixedThreadPool(5);
Callable<String> call = new Callable<String>() {
public String call() throws Exception {
Thread.sleep(1000 * 3);//休眠指定的时间,此处表示该操作比较耗时
return "Other less important but longtime things.";
}
};
Future<String> task = exec.submit(call);
//重要的事情
Thread.sleep(1000 * 3);
System.out.println("Let's do important things.");
//不重要的事情
String obj = task.get();
System.out.println(obj);
//关闭线程池
exec.shutdown();
}
}
分享到:
相关推荐
`java.util.concurrent.ExecutionException`通常是由于并发执行的Future或ExecutorService任务抛出异常导致的。在这个特定情况下,它伴随着`java.lang.OutOfMemoryError`,说明是内存不足引发了并发任务的执行失败。...
Java.util.concurrent是Java 5.0引入的一个重要包,它为多线程编程提供了一组高级并发工具。这个包的设计者是Doug Lea,它的出现是JSR-166的一部分,也被称作Tiger更新。Java.util.concurrent的引入是为了解决传统...
### Java并发工具包 `java.util.concurrent` 知识点详解 #### 一、引言 随着多核处理器的普及和应用程序复杂度的增加,多线程编程成为了现代软件开发不可或缺的一部分。为了简化并发编程的复杂性,Java 5 引入了 `...
标题中提到了“java.util.concurrent.uml.pdf”,这表明文件是一份Java并发编程工具包java.util.concurrent的UML(统一建模语言)类结构图的PDF格式文件。UML图能够帮助开发者理解Java并发包中的类、接口及其关系,...
`java.util.concurrent.ExecutionException` 是Java并发编程中一个常见的异常,通常在执行Future对象的get()方法时抛出。这个异常表明在异步任务的执行过程中发生了异常。当我们使用ExecutorService提交任务并尝试...
Java并发工具包(java.util.concurrent)是Java平台上用于高效、安全地处理多线程编程的重要组件。这个包包含了丰富的并发工具类,旨在帮助开发者构建高度并发的程序,提高程序的性能和可伸缩性。本资源是该工具包的...
Java.util.concurrent(JUC)是Java平台中的一个核心包,专门用于处理多线程并发问题。这个包包含了大量的工具类和接口,极大地简化了并发编程的复杂性,提高了程序的性能和可伸缩性。本测试源文件主要是针对JUC并发...
总之,`java.util.concurrent` 提供的工具使得并发编程变得更加容易和高效,是 Java 并发编程的基石,无论是对于初学者还是经验丰富的开发者,理解和掌握这个包都是非常重要的。通过熟练运用这些工具,开发者可以...
8. **并发编程**:`java.util.concurrent`包虽然不在`java.util`下,但与之紧密相关,提供了高级并发工具,如ExecutorService、Future、Semaphore和CyclicBarrier。 9. **事件模型**:`java.util.EventObject`和`...
8. **`java.util.concurrent`** 包:提供并发工具类,如`ExecutorService`、`Future`和`Semaphore`,帮助管理线程和控制并发。 9. **`java.util.Map.Entry`**:表示Map中的键值对,常用于遍历Map。 10. **`java....
Java中的`util.concurrent.Future`接口是Java并发编程中一个非常重要的概念,它是异步计算结果的代表。在Java多线程环境下,`Future`接口提供了一种方式来获取由其他线程执行的异步任务的结果。它允许你在不阻塞当前...
Java提供了三种方式用于创建线程,分别是继承java.lang.Thread类、实现java.lang.Runnable接口、应用java.util.concurrent.Callable接口与java.util.concurrent.Future接口。每种方式都有其优缺,需要根据实际工程...
11. **`java.util.concurrent`** 包:包含并发和多线程工具,如`ExecutorService`、`Future`和`Callable`。 12. **`java.util.logging.Logger`**:日志记录工具,用于输出程序运行时的信息。 13. **`java.lang....
此外,`java.util.concurrent`包下的`ConcurrentHashMap`、`CopyOnWriteArrayList`等容器类,为并发编程提供了线程安全的数据结构。 在`DaemonThreadTest.java`这个文件中,可能涉及到了Java的守护线程(Daemon ...
`java.util.concurrent`(JUC)包是Java标准库提供的一组强大的并发工具,它为开发者提供了丰富的类和接口,帮助简化并发编程。本用户指南将深入探讨这个包中的核心概念和主要类。 1. **线程池**: `java.util....
- `java.util.concurrent.CompletionService`:允许获取执行任务的结果,`ExecutorCompletionService` 是其具体实现,结合了 `ExecutorService` 和 `Future`。 5. 线程池执行原理 线程池的执行过程主要包括任务提交...
Java提供了多种实现定时任务的方式,其中最常用的包括`java.util.Timer`类和`java.util.concurrent.ScheduledExecutorService`接口。本篇文章将深入探讨这两种方法以及它们在实际应用中的使用。 首先,我们来看`...
`Thread`类允许创建和管理独立执行的线程,而`java.util.concurrent`包包含了许多高级并发工具,如线程池、未来结果(Future)和同步器(Semaphore)。 4. **网络编程**:`java.net`包提供了网络通信的接口和类,如...
- `java.util.concurrent` 包提供了丰富的并发工具,如`ExecutorService`、`Future`、`Semaphore`、`CountDownLatch`等,用于高效地管理线程和同步。 9. **其他工具类**: - `java.util.Random` 用于生成随机数。...