`

Java并发-Future实例

 
阅读更多

1.  Main

public class Main {

	public static void main(String[] args) throws Exception {
		FutureContext futureContext = new FutureContext();
		
		ExecutorService executorService = Executors.newCachedThreadPool();
		for(int i = 0; i <= 9; i++) {
			Future<Integer> future = executorService.submit(new Worker(i * 10 + 1, i * 10 + 10));
			futureContext.addFuture(future);
		}
		executorService.shutdown();
		
		new Thread(new Consumer(futureContext)).start();
		System.out.println("Main thread finished.");
	}
}

 

2. Worker

public class Worker implements Callable<Integer> {
	private int start;
	private int end;
	
	public Worker(int start, int end) {
		this.start = start;
		this.end = end;
	}

	public Integer call() throws Exception {
		int sum = 0;
		for (int i = start; i <= end; i++) {
			sum += i;
		}
		System.out.println("Work[" + start + " , " + end + "], finished.");
		return sum;
	}
}

 

3. FutureContext

public class FutureContext {
	
	private List<Future<Integer>> futureList = new ArrayList<Future<Integer>>();

	public List<Future<Integer>> getFutureList() {
		return futureList;
	}

	public void addFuture(Future<Integer> future) {
		this.futureList.add(future);
	}
	
}

 

4. Consumer

public class Consumer implements Runnable {
	private FutureContext futureContext;
	
	public Consumer(FutureContext futureContext) {
		this.futureContext = futureContext;
	}
	
	public void run() {
		try{
			Thread.sleep(3000);
			
			int sum = 0;
			for(Future<Integer> fu : futureContext.getFutureList()) {
				sum += fu.get();
			}
			System.out.println("Three seconds later, Consumer finished, sum=" + sum);
		}catch(Exception e) {
			e.printStackTrace();
		}
	}

}

 

Console



 

  • 大小: 16.3 KB
分享到:
评论

相关推荐

    Java 并发编程实战.pdf

    《Java并发编程实战》这本书是关于Java语言中并发编程技术的经典著作。它详细介绍了如何在Java环境中有效地实现多线程程序和并发控制机制。在Java平台上,由于其本身提供了强大的并发编程支持,因此,掌握并发编程...

    (PDF带目录)《Java 并发编程实战》,java并发实战,并发

    《Java 并发编程实战》是一本专注于Java并发编程的权威指南,对于任何希望深入了解Java多线程和并发控制机制的开发者来说,都是不可或缺的参考资料。这本书深入浅出地介绍了如何在Java环境中有效地管理和控制并发...

    JAVA并发编程实践.pdf+高清版+目录 书籍源码

    《JAVA并发编程实践》这本书是Java开发者深入理解并发编程的重要参考资料。它涵盖了Java并发的核心概念、工具和最佳实践,旨在帮助读者在多线程环境下编写高效、安全的代码。 并发编程是现代软件开发中的关键技能,...

    Java并发编程书籍高清版

    书中可能包含了大量示例代码,通过实例解析Java并发编程中的常见问题,如死锁、活锁、饥饿现象,以及如何避免这些问题。此外,还可能涉及了Java内存模型(JMM)的理解,以及如何使用Lock接口和Condition来实现更细...

    java并发编程

    Java并发编程是Java开发者必须掌握的关键技能之一,它涉及到如何在多线程环境中高效、安全地执行程序。并发编程能够充分利用多核处理器的计算能力,提高应用程序的响应速度和整体性能。《Java编程并发实战》这本书是...

    Java并发工具包

    Java并发工具包是Java平台中的一个关键特性,它位于`java.util.concurrent`包下,为开发者提供了高效、安全的多线程编程支持。这个工具包的设计目标是简化并发编程,提高程序的性能和可维护性,同时避免了线程同步的...

    Java并发编程实践(Java Concurrency in Practice) (中英版)

    《Java并发编程实践》是Java开发者深入理解和应用并发编程的权威指南,这本书全面覆盖了Java并发编程的各种核心概念和技术,旨在帮助程序员编写出高效、安全的并发代码。书中的内容既包括理论知识,也包含丰富的实战...

    Java并发编程_设计原则和模式(CHM)

    Java并发编程是软件开发中的重要领域,特别是在多核处理器和分布式系统中,高效地利用并发可以极大地提升程序的性能和响应速度。本资源"Java并发编程_设计原则和模式(CHM)"聚焦于Java语言在并发环境下的编程技巧、...

    Java并发编程的设计原则与模式

    本文将深入探讨Java并发编程的设计原则与模式,旨在帮助开发者理解并有效地应用这些原则和模式。 一、并发编程的基础概念 并发是指两个或多个操作在同一时间间隔内执行,而不是严格意义上的同一时刻。在Java中,...

    Java并发编程实践源码

    1. **jcip-examples-src.jar**:这个JAR文件包含《Java并发编程实践》一书中的所有源代码实例,它是学习并发编程的重要资源。通过阅读和分析这些代码,我们可以深入理解Java并发API的用法,如`java.util.concurrent`...

    java多线程并发编程例子

    Java多线程并发编程是Java开发中的重要领域,特别是在服务器端和高并发应用中不可或缺。`java.util.concurrent`包提供了丰富的工具类,帮助开发者更好地管理线程和优化并发性能。以下将详细介绍标题和描述中涉及的...

    java课件-5-多线程

    Java并发API的另一个亮点是Future和Callable接口,它们提供了一种异步计算的模型。Future代表一个异步操作的结果,而Callable允许我们在新的线程中执行计算并返回结果。 在压缩包的文件列表中,"5_多线程"可能包含...

    Java 并发编程实战(高清带目录).zip

    2. **Java并发API**:详细讲解了Java并发库中的关键类和接口,如Thread、Runnable、ExecutorService、Future、Semaphore、CyclicBarrier、CountDownLatch、Exchanger以及Lock(ReentrantLock、ReadWriteLock)等,...

    java高级编程100实例

    1. **多线程编程**:Java提供了强大的并发支持,如Thread类和Runnable接口,以及ExecutorService和Future等高级工具。实例可能会涵盖线程同步(如synchronized关键字、wait/notify机制、ReentrantLock)和并发集合...

    java经典面试题目-面经-java-Java语言的进阶概念-常用的库和框架-并发编程-网络编程-Web开发-面经

    Java并发编程涉及线程、锁、并发工具等,如synchronized关键字、ReentrantLock、CountDownLatch、CyclicBarrier等。线程池通过ExecutorService管理线程,提高资源利用率,可以通过ThreadPoolExecutor创建。 ...

    java并发编程实战源码-jcip-examples:java并发编程实战

    2. **并发工具类**:Java并发库提供了丰富的工具类,如ExecutorService、Future、BlockingQueue等。通过分析源码,可以了解到这些工具如何帮助我们管理和协调并发任务。 3. **并发设计模式**:书中会介绍一系列并发...

    java并发程序设计

    Java并发程序设计是Java编程技术中一个重要的领域,它涉及如何在多线程环境下编写有效且安全的代码。本文将从以下几个方面详细讲解Java并发程序设计的核心知识点: 1. 使用线程的经验:线程是并发程序的基础,包括...

    Java并发编程实践-电子书-02章

    除了基本的同步原语,Java并发工具包还提供了许多高级并发对象,如`BlockingQueue`、`ExecutorService`、`Future`和`Callable`等,它们简化了多线程编程的复杂度,提高了程序的可维护性和可扩展性。这些对象遵循更...

Global site tag (gtag.js) - Google Analytics