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();
}
}

优质内容筛选与推荐>>
1、UIButton扩展Block点击事件
2、DUBBO高级配置:多注册中心配置
3、非985/211毕业的我,该如何在三年内月入过万?
4、【推荐阅读】李国杰院士:新经济本质上是工业经济向数字经济过渡
5、从FPN到MaskR-CNN,一文告诉你Facebook的计算机视觉有多强


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号