美文网首页
CyclicBarrier

CyclicBarrier

作者: 凉快先生 | 来源:发表于2021-01-07 19:11 被阅读0次

    循环栅栏,什么时候人满了就把栅栏推到,都放出去,出去之后栅栏又重新起来,再等人满了,再放开。

    比如有一个复杂的操作,需要访问数据库,需要访问网络,需要访问文件,有一种方式是可以顺序执行,但这样效率太低了,另外可以并发执行,一个线程去访问数据库,一个线程访问网络,一个线程访问文件,等三个线程都执行完之后再做后续操作。这个时候就可以用CyclicBarrier。

    public class Study07 {

        public static void main(String[] args) {

            CyclicBarrier barrier =new CyclicBarrier(3, () -> {

                System.out.println("执行后续操作");

            });

            new Thread(()->{

                System.out.println("访问数据库...");

                try {

                    barrier.await();

                }catch (InterruptedException e) {

                    e.printStackTrace();

                }catch (BrokenBarrierException e) {

                    e.printStackTrace();

                }

            }).start();

            new Thread(()->{

                System.out.println("访问网络...");

                try {

                    barrier.await();

                }catch (InterruptedException e) {

                    e.printStackTrace();

                }catch (BrokenBarrierException e) {

                    e.printStackTrace();

                }

            }).start();

            new Thread(()->{

                System.out.println("访问文件...");

                try {

                    barrier.await();

                }catch (InterruptedException e) {

                    e.printStackTrace();

                }catch (BrokenBarrierException e) {

                    e.printStackTrace();

                }

            }).start();

        }

    }

    执行结果:

    访问数据库...

    访问网络...

    访问文件...

    执行后续操作

    相关文章

      网友评论

          本文标题:CyclicBarrier

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