随笔分类 - MultiThread
多线程相关
摘要:Semaphore 相当于一个信号灯,对自己创建的线程或者线程池创建的线程进行限流的作用。 需要手动acquire() 和 release() 使得同时进行的thread的数量保证在一定的范围内(Semaphore创建对象的初始大小) ThreadPool 创建线程,已经线程的复用。 控制线程的总量
阅读全文
摘要:概念和意义 尝试获取锁的线程不会立即阻塞(no wait),而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环消耗cpu unsafe中的源码 //unsafe.getAndAddInt putlic final int getAndAddInt(Object var1
阅读全文
摘要:ReentrantLock和synchronized默认都是非公平锁 顾名思义: 公平锁就是根据先来后到的顺序,给予申请的线程权力,不能插队 非公平锁就是不完全按照申请锁的顺序,给予每个线程相同的对待。 根据线程的优先级安排情况,也就是会出现插队现象 公平锁:ReentrantLock(true)
阅读全文
摘要:ReentrantLock和synchronized都是可重入锁 通俗来说就是拿着外层的锁,可以进入内部拥有相同锁的其他代码块。 可以拿多把锁,但是必须都解锁才能完全解开。 递归性质的上锁开锁,因此也叫递归锁。
阅读全文
摘要:CountDownLatch 每次当线程调用countDownLatch.countDown()方法时,会对计数器减1,减到0,countDownLatch.await()放行 public class CountDownLatchTest { public static void main(Str
阅读全文

浙公网安备 33010602011771号