![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC
文章平均质量分 96
月亮的-影子
努力学习,相信未来
展开
-
Java并发编程的艺术(5-10)学习总结
本文参考学习Java并发编程的艺术第5章 Java中的锁5.1 Lock接口synchronized没有的特性尝试非阻塞获取锁能够中断获取锁超时获取锁5.2 队列同步器队列同步器AbstractQueuedSynchronizer用来构建锁,或者其它同步组件。用一个int成员变量表示同步状态。通过内置的FIFO队列完成资源获取线程的排队工作。同步器的实现主要是继承,同步器需要提供(getState()、setState(int newState)和compareAndSe.原创 2021-12-05 19:49:19 · 1801 阅读 · 57 评论 -
Java并发编程的艺术(1-3)学习总结
注:本文参考Java并发编程的艺术第1章 并发编程的挑战并发编程的目的是让程序运行更快。1.1 上下文切换CPU通过时间片来循环执行任务。切换进程的时候会保存上一次的状态,方便下次的恢复。1.1.1 多线程一定快吗下面的代码一定很快吗?public class ConcurrencyTest { private static final long count = 10000l; public static void main(String[] args) thr.原创 2021-12-05 11:11:39 · 774 阅读 · 32 评论 -
ReentrantLock独享锁源码解析
原文链接:https://blog.csdn.net/anlian523/article/details/106344926目录独占锁源码解析重要变量(AQS)队列节点结构AQS持有队列UnsafeReentantLock的内部类ReentrantLock的公平和是否能够中断第一个实现公平和不响应阻断FairSync同步器(说说lock的过程?)acquire分析tryAcquire分析addWaiter为什么需要要使用双向队列和tail指针?acquireQueuedshouldParkAfterFai原创 2021-10-22 00:22:31 · 90 阅读 · 0 评论 -
ReentrantLock共享锁源码分析
原文链接:https://blog.csdn.net/anlian523/article/details/106598739目录1.共享锁Semaphore2.共享锁的获取acquireShareddoAcquireSharedsetHeadAndPropagate那么最后的h.waitSatus<0到底是什么意思呢?propagate的作用?3.共享锁的释放releaseShareddoReleaseSharedhead是0的时候状态那么什么时候会是PROPAGATE?源码思维导图(终点是doRe原创 2021-10-22 00:20:55 · 520 阅读 · 0 评论 -
AQS之Condition源码分析总结
参考原文链接:https://blog.csdn.net/anlian523/article/details/106653034目录Condition源码分析Condition队列和Sync队列比较newCondition()awaitaddConditionWaiterunlinkCancelledWaitersfullyReleaseisOnSyncQueuesignalAll释放Condition的队列doSignalAlltransferForSignalsignal假设前面的signal都没有被原创 2021-10-22 00:19:21 · 85 阅读 · 0 评论 -
并发题目进阶篇(ThreadLocal详解、线程池源码剖析、synchronized和lock的对比)总结
文章参考来源javaguide并发题目进阶篇总结1.synchronized1.1说说你对synchronized的了解?1.2说说自己是怎么使用synchronized?说说双重验证的单例模式?为什么双重验证要用volatile修饰对象?1.3构造方法需要使用synchronized吗?1.3讲一下synchronized的底层原理1.4jdk1.6之后做了什么优化?1.5谈谈synchronized和ReentrantLock的区别?2.volatile关键字2.2讲一下JMM2.3并发编程的3个重要原创 2021-10-20 20:35:16 · 103 阅读 · 0 评论 -
黑马面试题并发篇
黑马面试题并发篇1.线程分成多少种状态?java线程操作系统的线程2.线程池的参数有哪些?3.sleep和wait的区别?归属醒来的时机不同锁特性4.synchronized和Lock语法层面功能性能什么是公平和非公平?条件变量的原理?5.volatile保证线程安全吗?线程安全包括什么?案例(原子性)案例(可见性)可见性问题的根源有序性6.悲观锁和乐观锁的区别?悲观锁乐观锁(CAS)7.HashTable和ConcurrentHashMap的区别?HashTableConcurrentHashMap说说H原创 2021-10-19 19:44:14 · 737 阅读 · 2 评论 -
黑马并发编程JUC(信号量、线程安全类)总结
黑马并发编程JUC总结9.JUCSemaphore定义原理acquirereleaseCountDownLatch为什么需要用到CountDownLatch?定义为什么加载的时候需要使用到countDownLock?商品问题如果并发执行完且获取结果再继续执行?那么CountDownLatch有什么问题?10.线程安全类分类ConcurrentMap就能保证原子性了吗?Hashmap并发死链为什么会造成并发死链?JDK8版本ConcurrentHashMap重要源码属性分析重要方法构造方法getputinit原创 2021-10-18 21:55:13 · 712 阅读 · 0 评论 -
黑马并发编程(AQS源码分析、线程池)
AQS源码分析、线程池8.线程池1.自定义线程池阻塞队列优化队列线程池执行和线程处理设计线程池执行的整个思路阻塞添加拒绝策略2.ThreadExecutor线程池状态线程池参数拒绝策略newFixedThreadPoolnewCacheThreadPoolnewSingleThreadPoolsubmitinvokeAllinvokeAny关闭线程shutdownshutdownNow其它方法设计模式之工作线程定义上菜案例线程池需要的线程数量cpu密集型IO密集型Timer的缺陷newScheduledTh原创 2021-10-17 09:50:57 · 549 阅读 · 0 评论 -
黑马并发编程JUC总结
并发编程总结1并发编程2.进程和线程2.1定义2.2并发和并行2.3应用异步调用并发应用3.java线程3.1线程创建创建线程方法1创建方法2Thread和Runable的区别创建方法33.2线程运行3.3线程运行线程的栈线程上下文切换常见方法startrunsleepinterruptyieldsetPriorityjoininterrupt两阶段终止模式LockSupport3.4主线程和守护线程3.5线程5种状态3.6线程的六种状态3.7烧水泡茶案例join思路4.并发之共享模型4.1多线程带来的共享原创 2021-10-16 14:51:24 · 1874 阅读 · 0 评论