CyclicBarrier用于处理任务拆分,计算,等待计算全部完成,然后合并计算的场景,Future,CountDownLatch可以实现类似的场景。
package multithread.cycle; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; /** * 计算1^2 + 2^2 + 3^2 + ... * * @author lemzhang * */ public class TestCycle { private final CyclicBarrier cb; private final BlockingQueue<Long> result; private int total = 0; public TestCycle(int n) { result = new ArrayBlockingQueue<Long>(n); final long start = System.currentTimeMillis(); cb = new CyclicBarrier(n, new Runnable() { @Override public void run() { for (Long i : result) total += i; long end = System.currentTimeMillis(); System.out.printf("我计算好了,花了%d毫秒,结果是%d", (end - start), getResult()); } }); } public void calculate() { for (int i = 1; i <= cb.getParties(); i++) { new Thread(new Calculate(i)).start(); } } public long getResult() { return total; } class Calculate implements Runnable { private int n; Calculate(int n) { this.n = n; } @Override public void run() { result.offer((long) Math.pow(n, 2)); try { cb.await(); } catch (InterruptedException e) { e.printStackTrace(); } catch (BrokenBarrierException e) { e.printStackTrace(); } } } public static void main(String[] args) { TestCycle t = new TestCycle(200); t.calculate(); } }
相关推荐
Java提供了多种工具和接口,如线程(Thread)、ExecutorService、Future、Semaphore、CyclicBarrier、CountDownLatch等,用于管理和控制多线程环境下的并发执行,提高程序的并行效率。 3. **文件操作**:"[Java]...
在Java进阶学习中,你需要掌握以下几个关键的知识点: 1. 高级数据结构与算法:理解并能熟练运用ArrayList、LinkedList、HashMap等集合框架,深入研究Set、Queue、Stack等接口及其实现类。同时,学习并应用高级排序...
6. **多线程**:Java提供对多线程的全面支持,包括Thread类、Runnable接口,以及并发工具类如synchronized、wait/notify、Semaphore、CyclicBarrier等。理解线程同步和协作对于编写高效并发程序至关重要。 7. **JVM...
3. **同步工具类**:Java并发包`java.util.concurrent`中的工具类,如`Semaphore`(信号量)、`CyclicBarrier`(回环栅栏)、`CountDownLatch`(倒计时器)和`FutureTask`(未来任务)等,提供了更灵活的线程同步和...
10. **Java并发编程**:包括线程池、锁机制(如synchronized、ReentrantLock)、并发容器(如ConcurrentHashMap、CopyOnWriteArrayList)以及并发工具类(如CountDownLatch、CyclicBarrier)。 这些是Java基础知识...
Java提供了丰富的并发工具,如Thread、ExecutorService、Semaphore、CyclicBarrier等,以及java.util.concurrent包下的各种高级组件。文档可能涵盖线程安全、同步机制(synchronized、Lock)、并发容器、Future和...
学习和理解这两个工具,对于提升Java并发编程的能力至关重要,它们能帮助我们编写出更加高效、可维护的并发代码。通过阅读《java并发编程》中的实例,你可以更深入地掌握这些概念,并在实际工作中灵活运用。
线程同步和通信机制(如synchronized关键字、wait()、notify()、锁对象、CountDownLatch、CyclicBarrier等)是这部分学习的重点。 网络编程也是Java的重要组成部分,Socket编程允许创建客户端和服务器应用,实现...
本资源"JAVA线程学习(源代码)"提供了关于Java线程的源代码示例,帮助我们深入理解和实践线程的使用。 首先,我们要理解Java中的线程模型。Java线程由`java.lang.Thread`类或`java.util.concurrent.Executor`框架来...
这篇“java学习笔记”可能包含了从基础到进阶的各种Java编程概念和技术。以下是对这些笔记可能涵盖的一些关键知识点的详细说明: 1. **Java基础知识**: - **语法**:包括变量声明、数据类型(如整型、浮点型、...
学习Java的多线程编程,包括Thread类、Runnable接口,同步机制(synchronized关键字、wait()、notify()、notifyAll())以及并发工具类如Semaphore、CyclicBarrier等。理解线程间的协作和竞态条件。 第九章:Java...
在这个"java2学习1"的主题下,我们将深入探讨Java 2的核心概念和技术,以便帮助你更好地理解和掌握这个强大的编程平台。 1. **基础语法与数据类型**: Java 2的基础始于它的语法结构,包括变量声明、条件语句(如...
总的来说,Java多线程学习涵盖了线程的创建、同步、通信、调度以及异常处理等多个方面,深入理解和掌握这些知识点对于提升Java程序的性能和复杂性至关重要。通过阅读提供的"Java多线程.pdf"文档,你可以进一步了解和...
6. **多线程**:Java支持多线程编程,可以创建和管理多个执行线程,理解同步机制(如synchronized关键字、wait()、notify())和并发工具类(如ExecutorService、Semaphore、CyclicBarrier)。 7. **网络编程**:...
《Core Java 学习》是一本专为Java初学者和进阶者编写的经典教材,旨在帮助读者深入理解和掌握Java编程的核心概念和技术。书中的内容覆盖了Java语言的基础语法、面向对象编程、异常处理、多线程、集合框架、输入输出...
这个“Java SCJP中文学习指南”旨在帮助中文使用者深入理解Java编程语言,掌握核心概念和技术,为参加SCJP考试做好准备。 一、Java基础 Java是一种面向对象的编程语言,由Sun Microsystems(后被Oracle收购)开发。...
Java提供了Thread类和Runnable接口来创建线程,还有synchronized关键字、wait/notify机制以及并发工具类如Semaphore、CyclicBarrier等,帮助开发者管理多线程环境中的资源和同步问题。 Java反射机制允许我们在运行...
Java并发包(java.util.concurrent)提供了丰富的工具,如Semaphore(信号量)、CountDownLatch(计数器)和CyclicBarrier(循环栅栏)等,用于协调多线程间的同步和通信。 最后,Spring框架是Java开发中广泛使用的...
Java提供了多种同步机制,如`synchronized`关键字、`Lock`接口(包括`ReentrantLock`)以及`java.util.concurrent`包中的各种工具类,如`Semaphore`、`CountDownLatch`和`CyclicBarrier`。 3. ** volatile关键字**...
12. **并发工具类(java.util.concurrent)**:包含如Semaphore、CountDownLatch、CyclicBarrier等高级并发控制工具,便于开发多线程应用。 通过《Java JDK 6 学习笔记》中的示例,读者可以深入了解这些特性,并...