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