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
相关推荐
《Java并发编程实战》这本书是关于Java语言中并发编程技术的经典著作。它详细介绍了如何在Java环境中有效地实现多线程程序和并发控制机制。在Java平台上,由于其本身提供了强大的并发编程支持,因此,掌握并发编程...
《Java 并发编程实战》是一本专注于Java并发编程的权威指南,对于任何希望深入了解Java多线程和并发控制机制的开发者来说,都是不可或缺的参考资料。这本书深入浅出地介绍了如何在Java环境中有效地管理和控制并发...
书中通过实例解释了诸如`ExecutorService`、`Future`、`Callable`、`BlockingQueue`等高级并发工具类的使用方法,并详细阐述了如何利用这些工具来构建可伸缩、高性能的应用系统。 #### 二、并发基础知识 本书不仅...
《JAVA并发编程实践》这本书是Java开发者深入理解并发编程的重要参考资料。它涵盖了Java并发的核心概念、工具和最佳实践,旨在帮助读者在多线程环境下编写高效、安全的代码。 并发编程是现代软件开发中的关键技能,...
书中可能包含了大量示例代码,通过实例解析Java并发编程中的常见问题,如死锁、活锁、饥饿现象,以及如何避免这些问题。此外,还可能涉及了Java内存模型(JMM)的理解,以及如何使用Lock接口和Condition来实现更细...
Java并发编程是Java开发者必须掌握的关键技能之一,它涉及到如何在多线程环境中高效、安全地执行程序。并发编程能够充分利用多核处理器的计算能力,提高应用程序的响应速度和整体性能。《Java编程并发实战》这本书是...
4.2 实例封闭 4.2.1 Java监视器模式 4.2.2 示例:车辆追踪 4.3 线程安全性的委托 4.3.1 示例:基于委托的车辆追踪器 4.3.2 独立的状态变量 4.3.3 当委托失效时 4.3.4 发布底层的状态变量 4.3.5 示例:发布...
Java并发工具包是Java平台中的一个关键特性,它位于`java.util.concurrent`包下,为开发者提供了高效、安全的多线程编程支持。这个工具包的设计目标是简化并发编程,提高程序的性能和可维护性,同时避免了线程同步的...
根据提供的文件信息,我们可以推断出这本书主要关注的是Java并发编程的相关技术和理论。下面将从几个方面对这一主题进行深入探讨: ### Java并发编程的基本概念 #### 1. 并发与并行的区别 在讨论Java并发编程之前...
1. **jcip-examples-src.jar**:这个JAR文件包含《Java并发编程实践》一书中的所有源代码实例,它是学习并发编程的重要资源。通过阅读和分析这些代码,我们可以深入理解Java并发API的用法,如`java.util.concurrent`...
Java多线程并发编程是Java开发中的重要领域,特别是在服务器端和高并发应用中不可或缺。`java.util.concurrent`包提供了丰富的工具类,帮助开发者更好地管理线程和优化并发性能。以下将详细介绍标题和描述中涉及的...
《Java并发编程实践》是Java开发者深入理解和应用并发编程的权威指南,这本书全面覆盖了Java并发编程的各种核心概念和技术,旨在帮助程序员编写出高效、安全的并发代码。书中的内容既包括理论知识,也包含丰富的实战...
Java并发API的另一个亮点是Future和Callable接口,它们提供了一种异步计算的模型。Future代表一个异步操作的结果,而Callable允许我们在新的线程中执行计算并返回结果。 在压缩包的文件列表中,"5_多线程"可能包含...
此外,书中还深入讨论了Java并发工具类,如ExecutorService、Future、BlockingQueue、Semaphore等。这些工具是构建并发程序的重要组件,了解它们的特性和使用场景,能够帮助开发者更好地组织并发任务,优化系统资源...
2. **Java并发API**:详细讲解了Java并发库中的关键类和接口,如Thread、Runnable、ExecutorService、Future、Semaphore、CyclicBarrier、CountDownLatch、Exchanger以及Lock(ReentrantLock、ReadWriteLock)等,...
3. **并发工具类**:Java并发库(java.util.concurrent)提供了一系列高效的并发工具,如`ExecutorService`和`Future`用于管理线程池,`Semaphore`用于控制并发访问的数量,`BlockingQueue`用于线程间的数据传递等。...
本文将深入探讨Java并发编程的设计原则与模式,旨在帮助开发者理解并有效地应用这些原则和模式。 一、并发编程的基础概念 并发是指两个或多个操作在同一时间间隔内执行,而不是严格意义上的同一时刻。在Java中,...
1. **多线程编程**:Java提供了强大的并发支持,如Thread类和Runnable接口,以及ExecutorService和Future等高级工具。实例可能会涵盖线程同步(如synchronized关键字、wait/notify机制、ReentrantLock)和并发集合...