package cn.javass.spring.chapter12; import java.util.ArrayList; import java.util.List; 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; import java.util.concurrent.TimeUnit; public class TestFuture { public List<String> test() throws InterruptedException, Exception{ List<String> strList=new ArrayList<String>(); List<Future<List<String>>> resultList=new ArrayList<Future<List<String>>>(); ExecutorService exec=Executors.newCachedThreadPool(); resultList.add(exec.submit(new strTask())); resultList.add(exec.submit(new numTask())); exec.shutdown(); exec.awaitTermination(1,TimeUnit.DAYS); for(Future<List<String>> future:resultList){ List<String> returnFuture=future.get(); for(String s:returnFuture){ strList.add(s); } } return strList; } class strTask implements Callable<List<String>>{ @Override public List<String> call() throws Exception { List<String> strList=new ArrayList<String>(); for(int i=0;i<20;i++){ strList.add("a"+i); } return strList; } } class numTask implements Callable<List<String>>{ @Override public List<String> call() throws Exception { List<String> strList=new ArrayList<String>(); for(int i=0;i<20;i++){ strList.add(String.valueOf(i)); } return strList; } } }
相关推荐
### Java Callable与多线程详解 在Java编程中,`Callable`接口是...通过以上分析和示例,我们可以看到`Callable`和`Future`在Java多线程编程中的强大功能,尤其是在需要处理复杂的异步任务和需要返回结果的情况下。
在这个例子中,`Future` 和 `Callable` 的组合使得我们可以同时启动多个线程执行计算任务,并在所有任务完成后,一次性收集所有结果进行处理,避免了使用同步机制(如 `synchronized` 或 `wait/notify`)带来的复杂...
异步Future机制通常与ExecutorService和Callable接口一起使用。ExecutorService是一个线程池服务,可以提交任务并管理它们的生命周期。Callable接口类似于Runnable,但是它允许任务有返回值。 下面是一个简单的...
FutureTask类同时实现了Future和Runnable接口,因此它既可以作为Runnable被线程执行,又可以作为Future得到Callable的返回值。例如: Callable<Integer> mycallabletask = new MyCallableTask(); FutureTask...
Future模式的灵感来源于现实生活中的场景,如本文开头提到的买午餐和牙膏的例子,通过小票作为取餐凭证,实现并行处理和同步获取结果。 1. Future模式介绍 Future模式的核心是Future接口,它提供了一种方式来获取...
` 将Callable任务提交给线程池执行,返回一个Future对象,代表这个任务的未来状态和结果。 5. **多线程并行处理**:在for循环中,代码为每个月创建了一个Callable任务,并将它们提交到线程池。这样,每个月的日志...
在Java编程中,`Future`接口是并发处理的一个关键概念,它是`java.util.concurrent`包的一部分,与`ExecutorService`和`Callable`一起构成了Java并发编程的重要基石。本文将详细解析`Future`接口及其在实际编程中的...
java多个多线程例子,通过实现 Runnable 接口;通过继承 Thread 类本身;通过 Callable 和 Future 创建线程。恰同学少年,风华正茂,挥斥方遒。
3. **Future和Callable**:Callable接口用于创建带返回值的线程,Future接口用于获取线程执行结果。 4. **Synchronized和Lock**:同步机制,用于线程间的安全通信和资源访问控制。 在源码中,你可以学习如何在...
接下来,我们通过`ExecutorService`的`submit()`方法提交了一个`Callable`任务,这个方法会返回一个`Future`对象,代表了异步计算的结果。`Future`对象提供了几个关键的方法: 1. `get()`: 这个方法会阻塞当前线程...
除了`Callable`和`Future`,还可以使用`Runnable`配合`ExecutorService`和`Future`来实现有返回值的线程。首先创建一个实现了`Runnable`的类,然后在内部创建一个`Future`对象,通过`ExecutorService`提交任务并获取...
Java中的`Future`接口是Java并发编程的重要组成部分,它提供了对异步计算结果的访问和控制。`Future`接口在`java.util.concurrent`包中,主要用于处理由`ExecutorService`执行的任务。`Future`模式允许我们提交一个...
4. **Callable 与 Future**:Java 5.0 中引入了 `Callable` 接口和 `Future` 接口,它们提供了异步计算的能力。`Callable` 类似于 `Runnable`,但可以返回结果,而 `Future` 则用于获取 `Callable` 的返回值。 ####...
`Future`接口通常与`ExecutorService`和`Callable`一起使用。`ExecutorService`负责执行任务,而`Callable`定义了任务的具体逻辑并返回结果。下面是一个简单的示例: ```java import java.util.concurrent.*; ...
7. **多线程**:Java内置对多线程的支持,例子可能涉及Thread类的使用,线程同步(synchronized关键字),以及Callable和Future接口等高级特性。 8. **输入输出流**:Java I/O流系统用于处理数据的输入和输出。例子...
- **Java中的 `Callable` 和 `Future`**:在Java中,`Callable` 类似于Python的可调用对象,它定义了一个 `call()` 方法来执行任务。`Future` 是一个接口,用于表示异步计算的结果,可以获取或等待计算结果。 - **...
在实际开发中,线程池常与Future和Callable接口结合使用,Callable接口允许我们创建返回结果的任务,而Future接口提供了获取结果、判断任务是否完成和取消任务的方法。 总的来说,理解和掌握线程的概念、创建与控制...
在这个例子中,我们创建了一个`ExecutorService`来执行任务,然后创建了一个`FutureTask`,将`Callable`实例作为参数传入。`ExecutorService`执行`FutureTask`,`call()`方法在新线程中运行,返回一个字符串。通过...
CallableFuture结合了Future和Callable的功能。它继承自Future,因此具备检查任务状态、取消任务以及获取结果的能力。此外,CallableFuture还提供了call()方法,使得我们可以直接从异步任务中获取有返回值的结果。 ...
6. **多线程**: 理解线程的创建(Thread类和Runnable接口)、线程同步(synchronized关键字、wait()、notify()、锁对象等)以及并发工具类(如ExecutorService、Future、Callable)。 7. **数据库操作**: JDBC...