![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 91
LYH&
这个作者很懒,什么都没留下…
展开
-
JUC读书笔记(一)
内存语义、重排序规则与实现原理死锁产生的原因避免死锁的四个常用方法VolatileVolatile实现原理Volatile的两条实现原则Synchronizedsynchronized实现同步的基础(同步锁,锁的到底是谁?)原子操作的实现原理Java内存模型内存屏障类型表happens-before规则数据依赖性as-if-serial 语义顺序一致性内存模型未同步程序的执行特性Volatile的内存语义Volatile的特性重排序规则基于保守策略的JMM内存屏障插入策略锁的内存语义final域的内存语义f原创 2021-04-04 11:46:39 · 112 阅读 · 0 评论 -
JUC读书笔记(二)
线程为什么要使用多线程:更多的处理核心更快的响应时间更好的编程模型线程优先级Java线程中,通过一个整型成员变量priority来控制优先级,优先级的范围从1~10,在线程构建的时候可以通过setPriority(int)方法来修改优先级,默认优先级是5。针对频繁阻塞的(休眠或者IO操作)的线程需要设置较高优先级,而偏重计算(需要较多的CPU时间或者偏运算)的线程则设置较低的优先级,确保处理器不会被独占。但程序正确性不能依赖线程的优先级高低,因为操作系统完全可以不用理会Java线程对于优原创 2021-04-08 23:30:35 · 91 阅读 · 0 评论 -
JUC读书笔记(三)
文章目录Lock接口队列同步器(AbstractQueuedSynchronizer)代码同步器的接口和示例队列同步器的实现分析同步队列独占式同步状态获取与释放共享式同步状态获取与释放独占式超时获取同步状态重入锁实现重进入公平与非公平获取锁的区别读写锁读写锁的接口读写锁的实现分析读写状态的设计写锁的获取与释放读锁的获取与释放锁降级LockSupport工具Condition接口Condition接口与示例本章将介绍Java并发包中与dang锁相关的API和组件,以及这些API和组件的使用方式和实现细节。内原创 2021-04-13 12:43:19 · 71 阅读 · 0 评论 -
JUC读书笔记(四)
Java并发容器和框架ConcurrentHashMap为什么要使用ConcurrentHashMap在并发编程中使用HashMap可能导致程序死循环。而使用线程安全的HashTable效率又非常低下,基于以上两个原因,便有了ConcurrentHashMap的登场机会。线程不安全的HashMap在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。示例代码如下:final HashMap<String, S原创 2021-04-13 23:35:16 · 86 阅读 · 0 评论 -
JUC读书笔记(五)
文章目录Java中的13个原子操作类原子更新基本类型类原子更新数组原子更新引用类型原子更新字段类Java中的13个原子操作类原子更新基本类型类使用原子的方式更新基本类型,Atomic包提供了以下3个类。AtomicBoolean:原子更新布尔类型。AtomicInteger:原子更新整型。AtomicLong:原子更新长整型。此处仅以AtomicInteger为例进行讲解,AtomicInteger的常用方法如下。int addAndGet(int delta):以原子方式将输入的数值与实原创 2021-04-17 22:42:53 · 106 阅读 · 0 评论 -
JUC读书笔记(六)
文章目录等待多线程完成的CountDownLatch同步屏障CyclicBarrier控制并发线程数的Semaphore线程间交换数据的Exchanger等待多线程完成的CountDownLatchCountDownLatch的构造函数接收一个int类型的参数作为计时器,如果想等待N个点完成,这里就传入N。每调用一个CountDownLatch的countDown方法时,N就是减1,CountDownLatch的await方法会阻塞当前线程,直到N变成零。由于countDown方法可以用在任何地方,所以原创 2021-04-17 22:41:07 · 50 阅读 · 0 评论 -
JUC读书笔记(七)
文章目录使用线程池的好处线程池的实现原理ThreadPoolExecutor执行excute方法分下面4种情况。线程池的使用线程池的创建向线程池提交任务关闭线程池线程池的监控使用线程池的好处降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程时稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控。线程池的实现原理线程池判断核心线原创 2021-04-17 22:41:43 · 82 阅读 · 0 评论