
juc
摸鱼混子
这个作者很懒,什么都没留下…
展开
-
juc 之线程安全集合类
线程安全集合类 ConcurrentHashMap JDK 7 HashMap 并发死链 重要属性和内部类 LinkedBlockingQueue ConcurrentLinkedQueue CopyOnWriteArrayList原创 2021-07-15 11:51:14 · 240 阅读 · 0 评论 -
juc之并发工具类
并发工具类 AQS 原理 概述 ReentrantLock 原理 非公平锁 读写锁 ReentrantReadWriteLock 注意事项 缓存更新策略 stampedlock Semaphore CountdownLatch Cyclicbarrier原创 2021-07-14 20:28:09 · 166 阅读 · 0 评论 -
juc之不可变
共享模型之不可变 不可变设计 享元模式 简介 体现 final 原理 无状态原创 2021-07-13 15:42:09 · 79 阅读 · 0 评论 -
juc之无锁
CAS 与 volatile 调用原子类中的 compareAndSet 方法 为什么无锁效率高 CAS的特点 API 原子整数 原子引用 ABA问题 原子数组 字段更新器 原子累加器 原理之伪共享 UNSAFE原创 2021-07-13 10:17:00 · 139 阅读 · 0 评论 -
juc之JMM
JMM Java内存模型 原子性 通过锁 synchronized、ReentrantLock 来保证原子性 可见性 线程对主存的数据进行了修改,对另外的线程不可见。通过volatile来解决。 有序性 JVM会在不影响正确性的前提下调整语句的执行顺序,这种特性称之为指令重排,多线程下指令重排会影响正确性。 可见性 vs 原子性 System.out.println(); 方法中使用了 synchronized来保证变量的可见性。 synchronized (this) {原创 2021-07-12 18:48:59 · 191 阅读 · 0 评论 -
juc之ReentrantLock
ReentrantLock 可重入 可中断 synchronized 和 lock.lock() 都是不可打断的,可以使用 lock.lockInterruptibly() 来设置可打断锁。 interrupt() 方法可以打断sleep、wait、lock.lockInterruptibly() 状态,停止无休止的等待,解决死锁。 锁超时 如果无法获得锁,直接返回 公平锁 默认非公平 条件变量 小结 ...原创 2021-07-12 10:47:52 · 98 阅读 · 0 评论 -
juc之wait/notify、join、park&unpark、线程状态转换
wait/notify 原理 API介绍 wait notify的正确姿势 同步模式之保护性暂停 join 实质就是保护性暂停,条件不满足时实施wait等待 public final synchronized void join(long millis) throws InterruptedException { long base = System.currentTimeMillis(); long now = 0; if (millis原创 2021-07-12 09:41:51 · 170 阅读 · 0 评论 -
juc之synchronized
synchronized synchronized,即俗称的【对象锁】,它采用互斥的方式让同一时刻至多只有一个线程能持有【对象锁】,其它线程再想获取这个【对象锁】时就会阻塞住。这样就能保证拥有锁的线程可以安全的执行临界区内的代码,不用担心线程上下文切换 synchronized 实际是用对象锁保证了临界区内代码的原子性,临界区内的代码对外是不可分割的,不会被线程切换所打断。 注意: 虽然 java 中互斥和同步都可以采用 synchronized 关键字来完成,但它们还是有区别的: 互斥是保证临界区的竞态原创 2021-07-10 14:52:34 · 128 阅读 · 0 评论 -
juc之ThreadLocal
并发工具类——分类 线程池 好处 提高响应速度 便于资源管理 节约开销,合理利用CPU和内存 应用场合 创建和停止线程 工作队列 直接交接:只是作为缓冲,相当于长度为0的队列,直接将任务交给线程,需要将最大线程数加大 无界队列:无限填充任务 有界队列:根据需要设置队列大小 线程池手动创建 线程数量设置 拒绝策略 线程池状态 ThreadLocal 使用场景 ...原创 2021-07-08 19:16:10 · 204 阅读 · 0 评论 -
juc之线程池
线程池 好处 提高响应速度 便于资源管理 节约开销,合理利用CPU和内存 应用场合 创建和停止线程 工作队列 直接交接:只是作为缓冲,相当于长度为0的队列,直接将任务交给线程,需要将最大线程数加大 无界队列:无限填充任务 有界队列:根据需要设置队列大小 线程池手动创建 线程数量设置 拒绝策略 ![在这里插入图片描述](https://img-blog.csdnimg.c# 线程池 好处 提高响应速度 便于资源管理 节约开销,合理利用CPU和内存 应用场合 创建和停止线程原创 2021-07-08 19:09:16 · 89 阅读 · 0 评论