zoukankan      html  css  js  c++  java
  • Java Phaser

    //Listing 6-5. Using a Phaser to Control a One-Shot Action Serving a Variable Number
    //of Parties
    import java.util.ArrayList;
    import java.util.List;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Phaser;
    
    public class A {
        public static void main(String[] args)
    {
        List<Runnable> tasks = new ArrayList<>();
        
        tasks.add(() -> System.out.printf("%s running at %d%n",
        Thread.currentThread().getName(),
        System.currentTimeMillis()));
        
        tasks.add(() -> System.out.printf("%s running at %d%n",
        Thread.currentThread().getName(),
        System.currentTimeMillis()));
        runTasks(tasks);
    }
    
        static void runTasks(List<Runnable> tasks)
        {
            final Phaser phaser = new Phaser(1); // "1" (register self)
            // create and start threads
            for (final Runnable task: tasks)
            {
            phaser.register();
            Runnable r = () ->
            {
                try
                {
                    Thread.sleep(50 + (int) (Math.random() * 300));
                }
                catch (InterruptedException ie)
                {
                    System.out.println("interrupted thread");
                }
                phaser.arriveAndAwaitAdvance(); // await the ...
                // creation of ...
                // all tasks
                task.run();
            };
            
            Executors.newSingleThreadExecutor().execute(r);
            }
            // allow threads to start and deregister self
            phaser.arriveAndDeregister();
    }
    }
  • 相关阅读:
    NYOJ 542 试制品(第五届河南省省赛)
    714-Card Trick
    716-River Crossing
    1248-海岛争霸
    51Nod
    51Nod
    NYOJ_1274_信道安全
    ZZNU 2095 : 我只看看不写题
    前端-HTML标签
    python 17篇 unittest单元测试框架
  • 原文地址:https://www.cnblogs.com/rojas/p/5377261.html
Copyright © 2011-2022 走看看