JUC同步锁
JUC各种同步锁
咩哥无敌
这个作者很懒,什么都没留下…
展开
-
Java多线程之CountDownLatch
简介CountDownLatch常用于让多个线程并行执行和让线程等待其他线程完成之后再执行,提供了以下方法方法说明await()使当前线程进入同步队列进行等待,直到latch的值被减到0或者当前线程被中断,当前线程就会被唤醒。await(long timeout, TimeUnit unit)带超时时间的await()。countDown()使latch的值减1,如果减到了0,则会唤醒所有等待在这个latch上的线程。getCount()获得latch的数值原创 2021-12-21 17:22:48 · 466 阅读 · 0 评论 -
Java多线程之Exchanger
简介Exchanger用于两个线程间的通信,无论哪个线程先调用都会等到另外一个线程调用时进行数据交换例子public class TestExchanger { private static Exchanger<String> exchanger = new Exchanger<>(); public static void main(String[] args) { new Thread(()->{ try {原创 2021-11-26 17:52:38 · 798 阅读 · 0 评论 -
java多线程之ReadWriteLock
简介ReadWriteLock是一个读写互斥、读读不互斥的锁。ReadWriteLock是一个接口,内部有两个方法readLock和writeLock,一个是读锁,一个是写锁。ReetrantReadWriteLock实现了ReadWriteLock接口,添加了可重入性并支持公平与非公平模式。ReadWriteLock支持锁降级就是从写锁变成读锁,不支持锁升级就是从读锁变成写锁例子package com.test.juc.lock;import java.util.concurrent.locks原创 2021-11-08 16:26:54 · 312 阅读 · 0 评论 -
java多线程之Phaser
简介Phaser表示阶段同步器,用来解决控制多个线程分阶段共同完成任务的情景问题。我们可以将其看成一个一个的阶段,每个阶段都有需要执行的线程任务,任务执行完毕就进入下一个阶段。所以Phaser特别适合使用在重复执行或者重用的情况。例子一共五个人去爬山,先在山脚集合,再爬到山顶集合package com.test.juc.lock;import java.util.Random;import java.util.concurrent.Phaser;import java.util.concur原创 2021-11-05 19:12:32 · 214 阅读 · 0 评论 -
CyclicBarrier及其用法详解
简介CyclicBarrier类似于栅栏,等待满足设置的线程数时再放开栅栏,类似于客车,人满才发车。与CountDownLatch的直观区别就是CountDownLatch减到0的时候所有线程才被唤醒。用法假设有100个人要坐车,需要上满50个人才发车public class CyclicBarrierTest { public static void main(String[] args) { CyclicBarrier cb = new CyclicBarrier(5原创 2021-10-30 17:53:08 · 282 阅读 · 0 评论 -
Semaphore及其用法详解
简介Semaphore 通常我们叫它信号量, 可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源。常用于限流 。Semaphore常用方法说明acquire() 获取一个令牌,在获取到令牌、或者被其他线程调用中断之前线程一直处于阻塞状态。acquire(int permits) 获取一个令牌,在获取到令牌、或者被其他线程调用中断、或超时之前线程一直处于阻塞状态。 acquireUninterruptibly() 获取一个令牌,在获取到令牌之前线程一原创 2021-10-30 16:31:20 · 5296 阅读 · 0 评论 -
ReentrantLock可重入锁的使用
ReentrantLock与synchronized相同点都是独占锁,并且都可重入,通过以下代码可以证明ReentrantLock支持重入public class ReentrantLock_T1 { Lock lock = new ReentrantLock(); void m1() { lock.lock(); try { for(int i = 0; i < 10; i++) { Sy原创 2021-10-29 18:24:17 · 134 阅读 · 0 评论