摘要: 1.重入锁和synchronized比较 特征 synchronized reentrantLock 底层原理 JVM实现 JDK实现 性能区别 低->高(JDK5+) 高 锁的释放 自动释放(编译器保证) 手动释放(finally保证) 编码程度 简单 复杂 锁的粒度 读写不区分 读锁、写锁 高级 阅读全文
posted @ 2022-10-12 20:20 求道之愚者 阅读(27) 评论(0) 推荐(0)
摘要: 1.应用场景 CyclicBarrier应用于多个线程必须同时开始 2.代码 private static CyclicBarrier cyclicBarrier = new CyclicBarrier(5); public static void main(String[] args) { Exe 阅读全文
posted @ 2022-10-12 17:49 求道之愚者 阅读(19) 评论(0) 推荐(0)
摘要: 1.应用场景 对于多个线程来说,想要设计争抢有限的资源,可以用信号量来解决 2.代码 public static void main(String[] args) { ExecutorService executorService = Executors.newCachedThreadPool(); 阅读全文
posted @ 2022-10-12 17:39 求道之愚者 阅读(13) 评论(0) 推荐(0)
摘要: 原理 适合总分任务,这个锁主要适用情景,要求某些操作全部执行完成才能继续执行后面操作,这时候就可以适用cdl来计数,每次执行完一个操作就减一,计数为0后表示全部线程执行完毕。 注意 cdl限定了总数,一般来说,如果要让全部操作执行完,总数和操作数相等即可;如果总数大于操作数,操作将会永远消耗不完而卡 阅读全文
posted @ 2022-10-12 13:29 求道之愚者 阅读(51) 评论(0) 推荐(0)
摘要: 1.可创建线程池种类 在java.util.concurrent中提供了工具类Executors(调度器)对象来创建线程池,有四种 CachedThreadPool - 可缓存线程池 无限大、无线程创建线程,有空闲线程利用起来 FixedThreadPool - 定长线程池 固定线程总数,空闲线程用 阅读全文
posted @ 2022-10-12 12:21 求道之愚者 阅读(32) 评论(0) 推荐(0)
摘要: Integer和int的区别: 1.Integer默认值是null,int是0;int只需要定义类型直接赋值,而Integer需要创建对象 2.Integer值存储在堆内存里面,int是存储在栈空间里面 3.Integer作为对象类型,封装了一些方法属性,我们可以利用方法属性操作对象 为什么要设计成 阅读全文
posted @ 2022-10-12 12:19 求道之愚者 阅读(108) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-10-12 12:19 求道之愚者 阅读(21) 评论(0) 推荐(0)