zoukankan      html  css  js  c++  java
  • java CountDownLatch

    Listing 6-1. Using a Countdown Latch to Trigger a Coordinated Start
    import java.util.concurrent.CountDownLatch;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    public class CountDownLatchDemo
    {
        final static int NTHREADS = 3;
        public static void main(String[] args)
        {
            final CountDownLatch startSignal = new CountDownLatch(1);
            final CountDownLatch doneSignal = new CountDownLatch(NTHREADS);
            Runnable r = new Runnable()
            {
                @Override
                public void run()
                {
                    try
                    {
                        report("entered run()");
                        startSignal.await(); // wait until told to ...
                        report("doing work"); // ... proceed
                        Thread.sleep((int) (Math.random() * 1000));
                        doneSignal.countDown(); // reduce count on which
                        // main thread is ...
                    } // waiting
                    catch (InterruptedException ie)
                    {
                    System.err.println(ie);
                    }
                }
    
                void report(String s)
                {
                System.out.println(System.currentTimeMillis() +
                ": " + Thread.currentThread() +            ": " + s);
                }
            };
            
            ExecutorService executor = Executors.newFixedThreadPool(NTHREADS);
            for (int i = 0; i < NTHREADS; i++)
                executor.execute(r);
                try
                {
                    System.out.println("main thread doing something");
                    Thread.sleep(1000); // sleep for 1 second
                    startSignal.countDown(); // let all threads proceed
                    System.out.println("main thread doing something else");
                    doneSignal.await(); // wait for all threads to finish
                    executor.shutdownNow();
                }
                catch (InterruptedException ie)
                {
                System.err.println(ie);
                }
        }
    }
  • 相关阅读:
    理解Python闭包,这应该是最好的例子
    2021-01-31
    论unity中UI工具与GUI函数
    2021-01-31
    第八届“图灵杯”NEUQ-ACM程序设计竞赛(全题解&&详细)
    第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛(同步赛)全题解
    Go-快速排序
    网络地址转换NAT原理及其作用
    解析私有IP地址和公网IP地址
    first blog
  • 原文地址:https://www.cnblogs.com/rojas/p/5367008.html
Copyright © 2011-2022 走看看