zoukankan      html  css  js  c++  java
  • CountdownLatch

    import java.util.concurrent.CountDownLatch;
    import java.util.concurrent.CyclicBarrier;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    public class CountdownLatchTest {
    
        public static void main(String[] args) {
            ExecutorService service = Executors.newCachedThreadPool();
            final CountDownLatch cdOrder = new CountDownLatch(1);
            final CountDownLatch cdAnswer = new CountDownLatch(3);        
            for(int i=0;i<3;i++){
                Runnable runnable = new Runnable(){
                        public void run(){
                        try {
                            System.out.println("线程" + Thread.currentThread().getName() + 
                                    "正准备接受命令");                        
                            cdOrder.await();
                            System.out.println("线程" + Thread.currentThread().getName() + 
                            "已接受命令");                                
                            Thread.sleep((long)(Math.random()*10000));    
                            System.out.println("线程" + Thread.currentThread().getName() + 
                                    "回应命令处理结果");                        
                            cdAnswer.countDown();                        
                        } catch (Exception e) {
                            e.printStackTrace();
                        }                
                    }
                };
                service.execute(runnable);
            }        
            try {
                Thread.sleep((long)(Math.random()*10000));
            
                System.out.println("线程" + Thread.currentThread().getName() + 
                        "即将发布命令");                        
                cdOrder.countDown();
                System.out.println("线程" + Thread.currentThread().getName() + 
                "已发送命令,正在等待结果");    
                cdAnswer.await();
                System.out.println("线程" + Thread.currentThread().getName() + 
                "已收到所有响应结果");    
            } catch (Exception e) {
                e.printStackTrace();
            }                
            service.shutdown();
    
        }
    }
  • 相关阅读:
    LInux常用命令:总结
    SpringBoot声明式事务(转)
    连接linux客户端工具
    查看servlet 3.0文档方法
    通过spring.io找spring历史版本
    归并排序(比希尔还要快)
    快速排序(比希尔排序还要快)
    希尔排序(交换式和移位式)
    插入排序
    选择排序(时间复杂度O(n^2))
  • 原文地址:https://www.cnblogs.com/alamps/p/8196454.html
Copyright © 2011-2022 走看看