`

callable和future的小例子

 
阅读更多
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与多线程详解 在Java编程中,`Callable`接口是...通过以上分析和示例,我们可以看到`Callable`和`Future`在Java多线程编程中的强大功能,尤其是在需要处理复杂的异步任务和需要返回结果的情况下。

    java多线程Future和Callable类示例分享

    在这个例子中,`Future` 和 `Callable` 的组合使得我们可以同时启动多个线程执行计算任务,并在所有任务完成后,一次性收集所有结果进行处理,避免了使用同步机制(如 `synchronized` 或 `wait/notify`)带来的复杂...

    Java多线程之异步Future机制的原理和实现共5页.p

    异步Future机制通常与ExecutorService和Callable接口一起使用。ExecutorService是一个线程池服务,可以提交任务并管理它们的生命周期。Callable接口类似于Runnable,但是它允许任务有返回值。 下面是一个简单的...

    Java多线程之Callable接口的实现

    FutureTask类同时实现了Future和Runnable接口,因此它既可以作为Runnable被线程执行,又可以作为Future得到Callable的返回值。例如: Callable&lt;Integer&gt; mycallabletask = new MyCallableTask(); FutureTask...

    31 凭票取餐—Future模式详解.pdf

    Future模式的灵感来源于现实生活中的场景,如本文开头提到的买午餐和牙膏的例子,通过小票作为取餐凭证,实现并行处理和同步获取结果。 1. Future模式介绍 Future模式的核心是Future接口,它提供了一种方式来获取...

    Java多线程实现Callable接口

    ` 将Callable任务提交给线程池执行,返回一个Future对象,代表这个任务的未来状态和结果。 5. **多线程并行处理**:在for循环中,代码为每个月创建了一个Callable任务,并将它们提交到线程池。这样,每个月的日志...

    future.zip

    在Java编程中,`Future`接口是并发处理的一个关键概念,它是`java.util.concurrent`包的一部分,与`ExecutorService`和`Callable`一起构成了Java并发编程的重要基石。本文将详细解析`Future`接口及其在实际编程中的...

    Process.zip

    java多个多线程例子,通过实现 Runnable 接口;通过继承 Thread 类本身;通过 Callable 和 Future 创建线程。恰同学少年,风华正茂,挥斥方遒。

    Spring小例子项目源码

    3. **Future和Callable**:Callable接口用于创建带返回值的线程,Future接口用于获取线程执行结果。 4. **Synchronized和Lock**:同步机制,用于线程间的安全通信和资源访问控制。 在源码中,你可以学习如何在...

    Java的Future使用方法

    接下来,我们通过`ExecutorService`的`submit()`方法提交了一个`Callable`任务,这个方法会返回一个`Future`对象,代表了异步计算的结果。`Future`对象提供了几个关键的方法: 1. `get()`: 这个方法会阻塞当前线程...

    有返回值的线程

    除了`Callable`和`Future`,还可以使用`Runnable`配合`ExecutorService`和`Future`来实现有返回值的线程。首先创建一个实现了`Runnable`的类,然后在内部创建一个`Future`对象,通过`ExecutorService`提交任务并获取...

    java Future 接口使用方法详解

    Java中的`Future`接口是Java并发编程的重要组成部分,它提供了对异步计算结果的访问和控制。`Future`接口在`java.util.concurrent`包中,主要用于处理由`ExecutorService`执行的任务。`Future`模式允许我们提交一个...

    Java 5.0多线程编程

    4. **Callable 与 Future**:Java 5.0 中引入了 `Callable` 接口和 `Future` 接口,它们提供了异步计算的能力。`Callable` 类似于 `Runnable`,但可以返回结果,而 `Future` 则用于获取 `Callable` 的返回值。 ####...

    java代码-Future

    `Future`接口通常与`ExecutorService`和`Callable`一起使用。`ExecutorService`负责执行任务,而`Callable`定义了任务的具体逻辑并返回结果。下面是一个简单的示例: ```java import java.util.concurrent.*; ...

    JAVA讲义(唐大仕版)的课本例子

    7. **多线程**:Java内置对多线程的支持,例子可能涉及Thread类的使用,线程同步(synchronized关键字),以及Callable和Future接口等高级特性。 8. **输入输出流**:Java I/O流系统用于处理数据的输入和输出。例子...

    Python基于callable函数检测对象是否可被调用

    - **Java中的 `Callable` 和 `Future`**:在Java中,`Callable` 类似于Python的可调用对象,它定义了一个 `call()` 方法来执行任务。`Future` 是一个接口,用于表示异步计算的结果,可以获取或等待计算结果。 - **...

    第六课 线程的概念和例子.rar

    在实际开发中,线程池常与Future和Callable接口结合使用,Callable接口允许我们创建返回结果的任务,而Future接口提供了获取结果、判断任务是否完成和取消任务的方法。 总的来说,理解和掌握线程的概念、创建与控制...

    java多线程返回值使用示例(callable与futuretask)

    在这个例子中,我们创建了一个`ExecutorService`来执行任务,然后创建了一个`FutureTask`,将`Callable`实例作为参数传入。`ExecutorService`执行`FutureTask`,`call()`方法在新线程中运行,返回一个字符串。通过...

    CallableFuture简介-动力节点共16页.pd

    CallableFuture结合了Future和Callable的功能。它继承自Future,因此具备检查任务状态、取消任务以及获取结果的能力。此外,CallableFuture还提供了call()方法,使得我们可以直接从异步任务中获取有返回值的结果。 ...

    100个Java经典例子后端- Java

    6. **多线程**: 理解线程的创建(Thread类和Runnable接口)、线程同步(synchronized关键字、wait()、notify()、锁对象等)以及并发工具类(如ExecutorService、Future、Callable)。 7. **数据库操作**: JDBC...

Global site tag (gtag.js) - Google Analytics