Java并发编程(十九)Java 并发包中锁原理剖析 LockSupport 工具类

此文为读书笔记,欢迎评论,讨论问题,共同进步!LockSupport 工具类JDK 中的rt.jar包里面的LockSupport是个工具类,它的主要作用是挂起和唤醒线程,该工具类是创建锁和其他同步类的基础。LockSupport类与每个使用它的线程都会关联一个许可证,在默认情况下调用 LockSu
并发 2021年02月21日 46次浏览

Java并发编程(十八)Java 并发包中并发List源码剖析

此文为读书笔记,欢迎评论,讨论问题,共同进步!介绍并发包中的并发List只有CopyOnWriteArrayList。CopyOnWriteArrayList是一个线程安全的ArrayList,对其进行的修改操作都是在底层的一个复制的数组(快照)上进行的,也就是使用了写时复制策略。类图结构如图:在
并发 2021年02月21日 40次浏览

Java并发编程(十七)Java并发包中原子操作类原理

此文为读书笔记,欢迎评论,谈论问题,共同进步!JUC包提供了一系列的原子性操作类,这些类都是使用非阻塞算法CAS 实现的,相比使用锁实现原子性操作这在性能上有很大提高。原子性操作类的原理大致相同,下面描述下AtomicLong类的实现原理以及JDK8中新增的LongAdder和 LongAccumu
并发 2021年02月21日 54次浏览

Java并发编程(十六)ThreadLocalRandom

此文为读书笔记,欢迎评论,谈论问题,共同进步!ThreadLocalRandom类是 JDK 7在JUC包下新增的随机数生成器,它弥补了Random类在多线程下的缺陷。Random 类在JDK 7之前以及现在,java.util.Random 都是使用比较广泛的随机数生成工具类,而且java.lan
并发 2021年02月21日 37次浏览

Java并发编程(十五)锁

此文为读书笔记,欢迎评论,谈论问题,共同进步!乐观锁与悲观锁乐观锁和悲观锁是在数据库中引入的名词,但是在并发包锁里面也引入了类似的思想。悲观锁悲观锁:指对数据被外界修改持悲观态度,认为数据很容易就会被其他线程修改,所以在数据被处理前先对数据进行加锁,并在整个数据处理过程中,使数据处于锁定状态。悲观锁
并发 2021年02月21日 36次浏览

Java并发编程(十四)伪共享

此文为读书笔记,欢迎评论,谈论问题,共同进步!什么是伪共享为了解决计算机系统中主内存与CPU 之间运行速度差问题,会在CPU与主内存之间添加一级或者多级高速缓冲存储器(Cache)。这个Cache一般是被集成到 CPU 内部的,所以也叫 CPU Cache。两级 Cache 结构图:在Cache 内
并发 2021年02月21日 53次浏览

Java并发编程(十三)Java 中的原子性操作

此文为读书笔记,欢迎评论,谈论问题,共同进步!原子性操作,是指执行一系列操作时,这些操作要么全部执行,要么全部不执行,不存在只执行其中一部分的情况。在设计计数器时一般都先读取当前值,然后+1,再更新。这个过程是读—改一写的过程,如果不能保证这个过程是原子性的,那么就会出现线程安全问题。Java 中的
并发 2021年02月21日 57次浏览

Java并发编程(十二)Java 中共享变量的内存可见性问题

此文为读书笔记,欢迎评论,谈论问题,共同进步!Java 的内存模型先看下多线程下处理共享变 Java 的内存模型:Java内存模型规定,将所有的变量都存放在主内存中,当线程使用变量时,会把主内存里面的变量复制到自己的工作空间(工作内存),线程读写变量时操作的是自己工作内存中的变量。Java内存模型是
并发 2021年02月21日 66次浏览

Java并发编程(十一)多线程并发编程

此文为读书笔记,欢迎评论,谈论问题,共同进步!什么是多线程并发编程先区分下并发和并行:并发是指同一个时间段内多个任务同时都在执行,并且都没有执行结束;并行是说在单位时间内多个任务同时在执行;并发任务强调在一个时间段内同时执行,而一个时间段由多个单位时间累积而成,所以说并发的多个任务在单位时间内不一定
并发 2021年02月21日 36次浏览

Java并发编程(十)ThreadLocal

ThreadLocalThreadLocal是 JDK包提供的,它提供了线程本地变量,也就是说创建了一个 ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个本地副本。当多个线程操作这个变量时,实际操作的是自己本地内存里面的变量,从而避免了线程安全问题。创建一个ThreadLo
并发 2021年02月21日 40次浏览