[置顶] Java并发编程 CountDownLatch,Semaphore,CyclicBarrier
2017-04-08 22:20
295 查看
public class CountDownLatchApp { public CountDownLatch countDownLatch = new CountDownLatch(100); public Semaphore semaphore = new Semaphore(1); public CyclicBarrier cyclicBarrier = new CyclicBarrier(100); public static void main(String[] args) throws Exception { cyclicBarrierTest(); countDownLatchTest(); semaphoreTest(); } public static void cyclicBarrierTest() throws Exception { final CountDownLatchApp app = new CountDownLatchApp(); for (int i = 0; i < 99; i++) { new Thread(new Runnable() { public void run() { try { Thread.sleep(1000); System.out.println(Thread.currentThread().getName()); app.cyclicBarrier.await(); System.out.println(Thread.currentThread().getName() + "await"); } catch (Exception e) { } } }).start(); } System.out.println("Main"); app.cyclicBarrier.await(); System.out.println("MainEnd"); } public static void countDownLatchTest() throws Exception { final CountDownLatchApp app = new CountDownLatchApp(); for (int i = 0; i < 99; i++) { new Thread(new Runnable() { public void run() { try { Thread.sleep(1000); System.out.println(Thread.currentThread().getName()); app.countDownLatch.countDown(); } catch (Exception e) { } } }).start(); } System.out.println("Main"); app.countDownLatch.countDown(); app.countDownLatch.await(); System.out.println("MainEnd"); } public static void semaphoreTest() throws Exception { final CountDownLatchApp app = new CountDownLatchApp(); for (int i = 0; i < 99; i++) { new Thread(new Runnable() { public void run() { try { app.semaphore.acquire(); Thread.sleep(1000); System.out.println(Thread.currentThread().getName()); app.semaphore.release(); } catch (Exception e) { } } }).start(); } app.semaphore.acquire(); System.out.println("Main"); System.out.println("MainEnd"); app.semaphore.release(); } }
相关文章推荐
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- CyclicBarrier、CountDownLatch以及Semaphore使用及其原理分析
- java基础——Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- Concurrent包源码解读之CountDownLatch,Semaphore,CyclicBarrier
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- JAVA并发编程--Semaphore、CountDownLatch、ReentrantLock、CyclicBarrier
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- [置顶] java 并发编程实战书籍学习 第五章,CountDownLatch,FutureTask,CyclicBarrier,Semaphore学习
- Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- [沧海拾遗]java并发之CountDownLatch、Semaphore和CyclicBarrier