![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
读书笔记
文章平均质量分 64
Ez4Sterben
这个人一点也不懒
展开
-
【java并发编程的艺术读书笔记】java中的并发工具类(CountDownLatch、CyclicBarrier、Semaphore、Exchanger)
其实现原理是不停检查join线程是否存活,如果join线程存活则让当前线程永远等待。由于countDown方法可以用在任何地方,所以这里说的N个点,可以是N个线程,也可以是1个线程里的N个执行步骤。它提供一个同步点,在这个同步点,两个线程可以交换彼此的数据。,当两个线程都到达同步点时,这两个线程就可以交换数据,将本线程生产出来的数据传递给对方。因为没有第三个线程执行await方法,即没有第三个线程到达屏障,所以之前到达屏障的两个。例如,如果计算发生错误,可以重置计数器,并让线程重新执行一次。原创 2023-08-28 14:48:16 · 75 阅读 · 0 评论 -
【java并发编程的艺术读书笔记】ConcurrentHashMap是如何保证线程安全的
ConcurrentHashMap 使用了分段锁的机制,将哈希表分成多个段(Segment),每个段都拥有自己的锁。:ConcurrentHashMap 提供了一种安全的迭代器,可以在迭代时进行并发的读操作,而不会导致 ConcurrentModificationException 异常。:由于使用了分段锁,不同段的操作可以并行执行,这使得 ConcurrentHashMap 在多线程环境下能够提供较高的并发性能,同时避免了传统 HashMap 的并发问题。并发环境下HashMap可能会导致程序死循环,原创 2023-08-28 14:44:45 · 112 阅读 · 0 评论 -
【java并发编程的艺术读书笔记】AQS队列同步器简介、实现自定义锁
AQS)是 Java 并发包(java.util.concurrent)中一个重要的基础类,用于实现同步器(Synchronizer)的框架。AQS 提供了一种基于 FIFO 等待队列的机制,使得开发者可以相对容易地实现各种自定义的同步组件,例如锁、信号量、倒计时门栓等。AQS 主要是一个抽象类,它定义了一些基本的同步操作,而具体的同步逻辑需要子类继承并实现。AQS 内部维护了一个等待队列,用于管理等待获取同步状态的线程。AQS 的核心思想是,通过维护一个 state 变量来表示同步状态。原创 2023-08-28 14:38:30 · 121 阅读 · 0 评论 -
【java并发编程的艺术读书笔记】Lock接口简介、Condition类的使用、可重入锁与读写锁
Lock 接口是用于实现线程同步的一种机制。它提供了比传统的synchronized关键字更灵活和可扩展的方式来管理多个线程对共享资源的访问。Lock 接口的主要目标是解决synchronized关键字的一些限制,例如无法中断正在等待锁的线程不能尝试获取锁而立即放弃等待不能在等待一段时间后获取锁等等。原创 2023-08-28 14:24:04 · 128 阅读 · 0 评论 -
【java并发编程的艺术读书笔记】volatile关键字介绍、与synchronized的区别
volatile与synchronized原创 2023-08-27 21:37:30 · 137 阅读 · 0 评论 -
【并发编程的艺术读书笔记】synchronized锁升级机制详解
synchronized在早期被称为重量级锁,而到现在已经得到不少优化。偏向锁、轻量级锁、重量级锁指的是synchronized三种形态。原创 2023-08-22 11:43:53 · 82 阅读 · 0 评论 -
【深入理解jvm读书笔记】运行时数据区域有哪些
介绍各个运行时数据区域(程序计数器、java虚拟机栈、本地方法栈、java堆、方法区、运行时常量池)分别储存哪些数据,线程间是否共享原创 2023-08-21 16:44:18 · 126 阅读 · 0 评论 -
【深入理解jvm读书笔记】什么是引用分级(强引用、软引用、弱引用、虚引用)
引用设计引用分级的目的。原创 2023-08-21 16:35:27 · 87 阅读 · 0 评论 -
【深入理解jvm读书笔记】如何判断一个java对象是否已经死亡
当前主流的商用程序语言(Java、C#,上溯至前面提到的古老的Lisp)的内存管理子系统,都是通过可达性分析(Reachability Analysis)算法来判定对象是否存活的。缺点:占用了一些额外的内存空间,这个看似简单的算法有很多例外情况要考虑,必须要配合大量额外处理才能保证正确地工作,譬如单纯的引用计数就很难解决对象之间相互循环引用的问题。根据用户所选用的垃圾收集器以及当前回收的内存区域不同,还可以有其他对象“临时性”地加入,共同构成完整GC Roots集合。,搜索过程所走过的路径称为。原创 2023-08-21 16:33:57 · 76 阅读 · 0 评论 -
【深入理解jvm读书笔记】java中对象的内存布局
java对象的内存布局原创 2023-08-21 16:31:32 · 111 阅读 · 0 评论 -
【深入理解jvm读书笔记】jvm如何进行内存分配
一般来说(由字节码流中new指令后面是否跟随invokespecial指令所决定,Java编译器会在遇到new关键字的地方同时生成这两条字节码指令,但如果直接通过其他方式产生的则不一定如此),new指令之后会接着执行init()方法,按照程序员的意愿对对象进行初始化,这样一个真正可用的对象才算完全被构造出来。其实第一种方案就是给分配内存的操作加锁,指针碰撞的时候每个线程都不断尝试获取锁,而拿到锁的线程只有分配完对象内存空间并且修改指针后,才释放锁并通知其他线程,保证原子性。,这种情况的处理方案有两种。原创 2023-08-21 16:29:47 · 562 阅读 · 0 评论 -
【深入理解jvm读书笔记】java虚拟机中对象创建的流程
java虚拟机中对象创建的流程原创 2023-07-26 21:08:36 · 267 阅读 · 0 评论 -
【并发编程的艺术读书笔记】synchronized关键字与对象锁、类锁
本文介绍了synchronized关键字,并给出了对象锁,类锁的案例以及对书中死锁案例的分析。原创 2023-07-24 15:49:00 · 122 阅读 · 0 评论 -
【并发编程的艺术读书笔记】多线程的效率以及资源浪费问题
本文主要讨论多线程的效率以及资源浪费问题。原创 2023-07-24 14:14:56 · 80 阅读 · 0 评论 -
【并发编程的艺术读书笔记】创建线程的四种方式
创建线程的四种规范原创 2023-07-13 16:46:25 · 204 阅读 · 0 评论 -
【并发编程的艺术读书笔记】从内存图来理解java是如何执行多线程的
通过内存图理解Java中多线程的运行模式原创 2023-07-13 12:46:13 · 190 阅读 · 0 评论 -
【深入理解jvm读书笔记】java的优势以及jdk、jre、jvm三者之间的关系
java的优势,jdk、jre、jvm三者之间的关系原创 2023-07-19 00:22:47 · 210 阅读 · 0 评论