Java并发工具篇
发布日期:2021-05-13 04:11:36 浏览次数:9 分类:博客文章

本文共 12039 字,大约阅读时间需要 40 分钟。


theme: juejin
highlight: an-old-hope

���������������

���������������

������

������������������������������������������������������������

������������������������������������������������������������������

������������������������������������������������������

������������������������������������������������������������������

������

��������������������� JUC ���������������������������������������������������������������������������������������������������������

��������������������� JUC ���������������������������������������������������������������������������������������������

���������������������������

  • CountDownLatch���������������������������������������������������������������������
  • CyclicBarrier���������������������������������������������������������������������������������������������������������������������������������������������������
  • Semaphore������������������������������������������������������������������������������������������������������������

������������������������

������������������������������������������������������������������

������

  1. ���������������������
  2. ������������ CountDownLatch
  3. ��������������������� CyclicBarrier������������������
  4. ��������� Semaphore
  5. ������

������

1. ���������������������

������������������������������������������������������������������������������������������������������������������������������

2. ������������ CountDownLatch

������������������������������������������������������shuan���������������zha������������������)

���������������������������������������������������������������������

��������������������������������������������������� CountDownLatch ���������������������������������������������������������������������������������

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

������������ CountDownLatch ������������������

  • ���������������public CountDownLatch(int count)���������count���������������������������������������count=0���������������������������������������������������������������������

  • ���������������public void countDown()������������������������������count������������������������������-1���������count=0���������������������������������������������������������������������

  • ���������public void await()������������������������������������������count������������0���������������������������������������������������������������������

  • ���������������public boolean await(long timeout, TimeUnit unit)������������������await,������������������������������������������������������������������������������������������

  • ��������������� count���public long getCount()���������count������������������������������������������������������������������

������������������������������������������������������������������

  • ������������������������������������������
  • ���������������������������������������
  • ���������������������5V5���������������������������������������������������

������������������������������������������������������������������������������

public class CountDownLatchDemo {    public static void main(String[] args) throws InterruptedException {        // 1. ������������������������������������������������10        CountDownLatch latch = new CountDownLatch(10);        System.out.println("������������");      	// ������������������10������������������ 5V5 ���������10���������        for (int i = 0; i < 10; i++) {            new Thread(()->{                // ���������������������������������������������                try {                    Thread.sleep(1000);                } catch (InterruptedException e) {                    e.printStackTrace();                }                System.out.println(Thread.currentThread().getName()+"������100%");                // 2. ���������countDown������������������������������������������������������-1                latch.countDown(); //���������������������������������������������������������������            }).start();        }        // 3. ���������������������������������������10������0;        latch.await();        System.out.println("������������������������������������");    }}

���������������

������������Thread-0������100%Thread-1������100%Thread-2������100%Thread-3������100%Thread-4������100%Thread-5������100%Thread-6������100%Thread-8������100%Thread-9������100%Thread-7������100%������������������������������������

������������������������������������������������������������������10������������������������������������������������������

���������������������������������������������������������������������������

3. ��������������������� CyclicBarrier������������������

���������������������������������������������������������������������������������������������������

���������������������������������������������������������������������������������

PS������������������������������������������������������������������������������������������������������������������������������������������

������������������������������������������������������������������������������������������

���������10������������������await���������������������������������������await������������������������

������������������������������������������������������������������������������

������������������������������������������������������������������������������Runnable���������������������������������������������

������������������������������������������������������������

  • ������������������������������������������������������������������������������������
  • ������������������������������������������������������������������������������������������������������

��������������������������������� CyclicBarrier ������������������

  • ���������������public CyclicBarrier(int parties, Runnable barrierAction)���������������������������������������������������������������barrierAction���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
  • ���������public int await()������������������������������������������������������������������������
  • ���������������public boolean await(long timeout, TimeUnit unit)������������������await,���������������������������������
  • ���������������������������������public int getNumberWaiting()���������������await���������������������

���������

  • ������������������������������������������������������������������������������������������������������������������������������������

  • ������������������������

    • ���������������������������������������������������������������������������������
    • ������������������������������������������������������������������������������������������

���������������������������������������������

public class CyclicBarrierDemo {    public static void main(String[] args) throws InterruptedException {        // 1. ������������������������������������������������10���������������        CyclicBarrier barrier = new CyclicBarrier(10,()->{            // ������������������������������������await���������������            System.out.println("=== ������������������������");            try {                Thread.sleep(2000);            } catch (InterruptedException e) {                e.printStackTrace();            }        });        System.out.println("=== ��������������������� ===");        // 2. ������10������������������10���������        for (int i = 0; i < 10; i++) {            new Thread(()->{                try {                    // ������������                    System.out.println(Thread.currentThread().getName()+"=>������������������������������");                    // ���������������������������������������������������������������������������������������������������������������                    barrier.await();                } catch (InterruptedException e) {                    e.printStackTrace();                } catch (BrokenBarrierException e) {                    e.printStackTrace();                }            }).start();        }        // 3. ������������������������������������������������0���������������������������        while (barrier.getNumberWaiting()!=0){            Thread.sleep(1000);        }        System.out.println("=== ��������������������� ===");                // 4. ������������������������������������������������������������������������������������������������������������������������            }}

���������������

=== ��������������������� ===Thread-0=>������������������������������Thread-1=>������������������������������Thread-2=>������������������������������Thread-3=>������������������������������Thread-4=>������������������������������Thread-5=>������������������������������Thread-6=>������������������������������Thread-7=>������������������������������Thread-8=>������������������������������Thread-9=>������������������������������=== ������������������������=== ��������������������� ===

4. ��������� Semaphore

������������������������������������������������������������������������������������������������������������������������������������

������������������������������������������������������

  • ���������������public Semaphore(int permits, boolean fair),���������������������������������������������������������������������������������������������������������������������������������������
    • ���������������������������acquire���������������������������FIFO������������
    • ���������������������������������������������������������������������������������������������������acquire������������������������������������������������
  • ���������������public void acquire()������������������������������������������������������������1���������������������������������������������������������������
  • ���������������������public boolean tryAcquire()������������������acquire���������������������������������������������������������������������������������������false
  • ���������������public void release() ���������������������������������������������1
  • ������������������������������public int availablePermits() ���������������������������������

���������������������������

������������������������������������������������������������������������������������������������������

���������������������������������������������acquire���release���������������������������������������������������������������������

5 ������

���������������������������

������ CountDownLatch CyclicBarrier Semaphore
��������������� ������ ������������������������ ������������������������
��������������� ��������������������������������������������������������������� ��������������������������������� ���������������������������
������ 1. ���������
2. ������������������������
3. ���������������������������������
1. ������������������������
2. ���������������������������
1. ������������������

������������������������������������������������������������������������������������������������������������������������������������������������������

������

  1. ������������������������������������������������������������������������������������������������������������������������������������������������������
  2. ������������ CountDownLatch������������������������������������������������������������������������������������������������
  3. ������������ CyclicBarrier������������������������������������������������������������������
  4. ��������� Semaphore������������������������������������������������������������������������
  5. ���������
������ CountDownLatch CyclicBarrier Semaphore
��������������� ������ ������������������������ ������������������������
��������������� ��������������������������������������������������������������� ��������������������������������� ���������������������������
������ 1. ���������
2. ������������������������
3. ���������������������������������
1. ������������������������
2. ���������������������������
1. ������������������

���������������

  • ���Java���������������������
  • ���������Java������������

������

������������������������������������

���������������

���������������������������������������

上一篇:linux命令的使用 以及基本docker命令及docker镜像安装
下一篇:Hive解析Json数组超全讲解

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月24日 11时08分45秒