Semaphore.acquire():最多n个运行,与Executors.newFixedThreadPool( 2 )作用相似
CyclicBarrier.await(): 加到n才开始
CountDownLatch.await(): 减到0才开始
/** * CyclicBarrier.await(): Waits until all parties have invoked await on this barrier. * @author timeriver.wang * @date Mar 10, 2014 10:43:52 AM */ public class CyclicBarrierTest { public static void main(String[] args) { ExecutorService service = Executors.newCachedThreadPool(); final CyclicBarrier cb = new CyclicBarrier(3); for(int i=0;i<3;i++){ Runnable runnable = new Runnable(){ public void run(){ try { Thread.sleep((long)(Math.random()*1000)); System.out.println("线程" + Thread.currentThread().getName() + "即将到达集合地点1,当前已有" + (cb.getNumberWaiting()+1) + "个已经到达," + (cb.getNumberWaiting()==2?"都到齐了,继续走啊":"正在等候")); cb.await(); Thread.sleep((long)(Math.random()*10000)); System.out.println("线程" + Thread.currentThread().getName() + "即将到达集合地点2,当前已有" + (cb.getNumberWaiting()+1) + "个已经到达," + (cb.getNumberWaiting()==2?"都到齐了,继续走啊":"正在等候")); cb.await(); } catch (Exception e) { e.printStackTrace(); } } }; service.execute(runnable); } service.shutdown(); } }
相关推荐
Java提供了多种创建线程的方式,如继承Thread类或实现Runnable接口,然后通过调用start()方法启动线程。 在描述中提到的NetBeans是一个流行的Java集成开发环境(IDE),它为开发者提供了丰富的工具和功能,包括代码...
Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,提升软件的效率和响应...在实际项目中,结合Java的开源库,如`java-multi-thread-programming-master`,可以进一步提升我们的多线程编程能力。
- `CyclicBarrier` 和 `CountDownLatch`:协调多个线程间的同步。 3. **线程通信**: - `wait()`, `notify()`, `notifyAll()`:在 `synchronized` 块内使用,实现线程间的通信和协作。 - `BlockingQueue`:如 `...
`nimbo-java-multi-threading`项目提供了丰富的示例代码,帮助开发者深入理解和实践Java的多线程技术。以下将详细讲解Java多线程的相关知识点。 1. **线程的创建** - **继承Thread类**:通过继承`java.lang.Thread...
- **CyclicBarrier**和**CountDownLatch**:用于线程间的协作。 通过本教程的学习,读者将能够理解Java线程的基本原理,并能够运用这些知识来开发简单的多线程应用。此外,读者还将了解如何处理线程间的交互问题,...
标题“Multi person chat_jdk1.8_java编程_”表明我们将探讨一个基于Java 1.8(也称为JDK 1.8)的多人聊天应用程序的实现。描述中提到使用IntelliJ IDEA(一个流行的Java开发集成环境)来构建这个应用,并且利用多...
2. **Java的并发模型**:Java提供了丰富的并发工具,如`Thread`类、`ExecutorService`、`Future`、`Callable`、`CyclicBarrier`、`Semaphore`等,以及并发集合如`ConcurrentHashMap`、`CopyOnWriteArrayList`等,...
Java的并发集合如ConcurrentHashMap、CopyOnWriteArrayList等,以及并发工具类如CountDownLatch、CyclicBarrier、Semaphore等,都是为了解决多线程环境中的数据同步问题。"DefiantStream.java"可能巧妙地运用了这些...