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环境中有效地管理和控制并发...
《JAVA并发编程实践》这本书是Java开发者深入理解并发编程的重要参考资料。它涵盖了Java并发的核心概念、工具和最佳实践,旨在帮助读者在多线程环境下编写高效、安全的代码。 并发编程是现代软件开发中的关键技能,...
书中可能包含了大量示例代码,通过实例解析Java并发编程中的常见问题,如死锁、活锁、饥饿现象,以及如何避免这些问题。此外,还可能涉及了Java内存模型(JMM)的理解,以及如何使用Lock接口和Condition来实现更细...
Java并发编程是Java开发者必须掌握的关键技能之一,它涉及到如何在多线程环境中高效、安全地执行程序。并发编程能够充分利用多核处理器的计算能力,提高应用程序的响应速度和整体性能。《Java编程并发实战》这本书是...
Java并发工具包是Java平台中的一个关键特性,它位于`java.util.concurrent`包下,为开发者提供了高效、安全的多线程编程支持。这个工具包的设计目标是简化并发编程,提高程序的性能和可维护性,同时避免了线程同步的...
《Java并发编程实践》是Java开发者深入理解和应用并发编程的权威指南,这本书全面覆盖了Java并发编程的各种核心概念和技术,旨在帮助程序员编写出高效、安全的并发代码。书中的内容既包括理论知识,也包含丰富的实战...
Java并发编程是软件开发中的重要领域,特别是在多核处理器和分布式系统中,高效地利用并发可以极大地提升程序的性能和响应速度。本资源"Java并发编程_设计原则和模式(CHM)"聚焦于Java语言在并发环境下的编程技巧、...
本文将深入探讨Java并发编程的设计原则与模式,旨在帮助开发者理解并有效地应用这些原则和模式。 一、并发编程的基础概念 并发是指两个或多个操作在同一时间间隔内执行,而不是严格意义上的同一时刻。在Java中,...
1. **jcip-examples-src.jar**:这个JAR文件包含《Java并发编程实践》一书中的所有源代码实例,它是学习并发编程的重要资源。通过阅读和分析这些代码,我们可以深入理解Java并发API的用法,如`java.util.concurrent`...
Java多线程并发编程是Java开发中的重要领域,特别是在服务器端和高并发应用中不可或缺。`java.util.concurrent`包提供了丰富的工具类,帮助开发者更好地管理线程和优化并发性能。以下将详细介绍标题和描述中涉及的...
Java并发API的另一个亮点是Future和Callable接口,它们提供了一种异步计算的模型。Future代表一个异步操作的结果,而Callable允许我们在新的线程中执行计算并返回结果。 在压缩包的文件列表中,"5_多线程"可能包含...
2. **Java并发API**:详细讲解了Java并发库中的关键类和接口,如Thread、Runnable、ExecutorService、Future、Semaphore、CyclicBarrier、CountDownLatch、Exchanger以及Lock(ReentrantLock、ReadWriteLock)等,...
1. **多线程编程**:Java提供了强大的并发支持,如Thread类和Runnable接口,以及ExecutorService和Future等高级工具。实例可能会涵盖线程同步(如synchronized关键字、wait/notify机制、ReentrantLock)和并发集合...
Java并发编程涉及线程、锁、并发工具等,如synchronized关键字、ReentrantLock、CountDownLatch、CyclicBarrier等。线程池通过ExecutorService管理线程,提高资源利用率,可以通过ThreadPoolExecutor创建。 ...
2. **并发工具类**:Java并发库提供了丰富的工具类,如ExecutorService、Future、BlockingQueue等。通过分析源码,可以了解到这些工具如何帮助我们管理和协调并发任务。 3. **并发设计模式**:书中会介绍一系列并发...
Java并发程序设计是Java编程技术中一个重要的领域,它涉及如何在多线程环境下编写有效且安全的代码。本文将从以下几个方面详细讲解Java并发程序设计的核心知识点: 1. 使用线程的经验:线程是并发程序的基础,包括...
除了基本的同步原语,Java并发工具包还提供了许多高级并发对象,如`BlockingQueue`、`ExecutorService`、`Future`和`Callable`等,它们简化了多线程编程的复杂度,提高了程序的可维护性和可扩展性。这些对象遵循更...