美文网首页
java CountDownLatch倒计时

java CountDownLatch倒计时

作者: 饱饱抓住了灵感 | 来源:发表于2022-10-09 20:36 被阅读0次

CountDownLatch可以对多线程进行拦截, 直至倒计时为0才放行

如下代码, 用于测试SimpleDateFormat是否线程安全

    @Test
    public void simpleFormatTest() {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        List<String> listDateStr = Lists.newArrayList("2022-07-07 00:00:00", "2022-07-07 01:11:11", "2022-07-07 02:22:22", "2022-07-07 03:33:33", "2022-07-07 04:44:44", "2022-07-07 05:55:55");

        ExecutorService executorService = Executors.newCachedThreadPool();
        // 通过CountDownLatch, 可以加强并发, 让倒计时为0时一起格式化
        CountDownLatch countDownLatch = new CountDownLatch(listDateStr.size());
        for (String dateStr : listDateStr) {
            executorService.submit(() -> {
                try {
                    countDownLatch.await();
                    System.out.println(format.parse(dateStr));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
            countDownLatch.countDown();
            System.out.println("倒计时:" + countDownLatch.getCount());
        }
        try {
            countDownLatch.await();
            System.out.println("主线程最后执行");
            System.out.println(format.parse("2022-07-07 06:06:06"));
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

相关文章

网友评论

      本文标题:java CountDownLatch倒计时

      本文链接:https://www.haomeiwen.com/subject/uavlnrtx.html