
本文共 12039 字,大约阅读时间需要 40 分钟。
theme: juejinhighlight: an-old-hope
���������������
���������������
������
������������������������������������������������������������
������������������������������������������������������������������
������������������������������������������������������
������������������������������������������������������������������
������
��������������������� JUC ���������������������������������������������������������������������������������������������������������
��������������������� JUC ���������������������������������������������������������������������������������������������
���������������������������
- CountDownLatch���������������������������������������������������������������������
- CyclicBarrier���������������������������������������������������������������������������������������������������������������������������������������������������
- Semaphore������������������������������������������������������������������������������������������������������������
������������������������
������������������������������������������������������������������
������
- ���������������������
- ������������ CountDownLatch
- ��������������������� CyclicBarrier������������������
- ��������� Semaphore
- ������
������
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. ������������������ |
������������������������������������������������������������������������������������������������������������������������������������������������������
������
- ������������������������������������������������������������������������������������������������������������������������������������������������������
- ������������ CountDownLatch������������������������������������������������������������������������������������������������
- ������������ CyclicBarrier������������������������������������������������������������������
- ��������� Semaphore������������������������������������������������������������������������
- ���������
������ | CountDownLatch | CyclicBarrier | Semaphore |
---|---|---|---|
��������������� | ������ | ������������������������ | ������������������������ |
��������������� | ��������������������������������������������������������������� | ��������������������������������� | ��������������������������� |
������ | 1. ���������2. ������������������������3. ��������������������������������� | 1. ������������������������2. ��������������������������� | 1. ������������������ |
���������������
- ���Java���������������������
- ���������Java������������
������
������������������������������������
���������������
���������������������������������������
发表评论
最新留言
关于作者
