JMM
文章平均质量分 90
Z105
这个作者很懒,什么都没留下…
展开
-
JMM——线程池ThreadPoolExecutor
文章目录ThreadPoolExecutor1.什么是ThreadPoolExecutor(线程池)?2.如何去使用线程池?3.线程池的参数4.线程池的运行原理ThreadPoolExecutor1.什么是ThreadPoolExecutor(线程池)?线程池就是装有多个线程的容器,当需要跑任务的时候,直接往线程池丢一个任务,线程池自动来分配线程帮我们解决。线程池的类为java.util.concurrent.ThreadPoolExecutor2.如何去使用线程池?public class T原创 2021-07-04 14:04:27 · 75 阅读 · 0 评论 -
JMM——CAS
文章目录CAS1.什么是CAS?CAS1.什么是CAS?CAS是英文单词Compare And Swap的缩写,翻译过来就是比较并替换。因为CAS是一条原子指令,所以我们整个设置值得过程无需担心安全问题。JVM中的CAS操作正是利用了上文中提到的处理器提供的CMPXCHG指令实现的。针对java开发来说的话,CAS的API都封装在sun.misc.Unsafe类里。...原创 2021-07-04 11:48:56 · 114 阅读 · 0 评论 -
JMM——AQS之Condition类
文章目录Condition1.什么是Condition?2.Condition的使用案例3.Condition的源码解读3.1从reentrantLock.newCondition();构造方法入手3.2从condition.await();等待挂起入手3.3从condition.signal();唤醒入手3.Condition的总结Condition1.什么是Condition?Condition是在java 1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的原创 2021-07-02 19:10:00 · 99 阅读 · 0 评论 -
JMM——AQS之BlockingQueue队列
文章目录AQS之BlockingQueue队列1.什么是BlockingQueue队列2.BlockingQueue API 详解2.1 入队API2.2 出队API2.3 其他的API3.队列的数据结构4.队列类型5. 常用实现类AQS之BlockingQueue队列1.什么是BlockingQueue队列BlockingQueue,是java.util.concurrent 包提供的用于解决并发生产者 - 消费者问题的最有用的类,它的特性是在任意时刻只有一个线程可以进行take或者put操作,并原创 2021-07-02 15:37:18 · 114 阅读 · 0 评论 -
JMM——AQS之CountDownLatch源码解读
文章目录CountDownLatch1. CountDownLatch是什么?2.CountDownLatch的用法3.CountDownLatch的使用场景4.CountDownLatch的源码解读4.1 CountDownLatch的构造方法入手4.2 countDownLatch.await();获取锁4.2.1 tryAcquireShared();尝试获取锁4.2.2 doAcquireSharedInterruptibly();进入阻塞4.3 countDownLatch.countDown()原创 2021-07-02 13:01:04 · 133 阅读 · 0 评论 -
JMM——AQS之Semaphore源码解读
文章目录Semaphore源码解读1.Semaphore 是什么?2.Semaphore 的用法3.Semaphore的API4.Semaphore的源码解读(公平锁为例)4.1 从构造方法入手4.2 从semaphore.acquire(); 获取锁逻辑入手4.2.1 查看tryAcquireShared();方法4.2.2 查看doAcquireSharedInterruptibly();方法4.3 从semaphore.release(); 释放锁逻辑入手4.3.1 tryReleaseShared(原创 2021-07-01 23:09:31 · 135 阅读 · 0 评论 -
JMM——AQS之ReentrantLock源码解读
文章目录ReentrantLock源码解读1.什么是ReentrantLock?2.ReentrantLock的用法3.源码解读(公平锁为例)3.1 从构造方法入手3.2 加锁逻辑入手 reentrantLock.lock();3.2.1 查看tryAcquire方法。3.2.2 查看addWaiter方法。3.2.3 查看acquireQueued方法。3.3 释放锁逻辑入手 reentrantLock.unlock();3.3.1 tryRelease(),尝试释放锁。3.3.2 unparkSucce原创 2021-06-30 20:52:39 · 161 阅读 · 0 评论 -
JMM———线程中断
文章目录线程中断1.JDK提供的API1.1 JVM直接中断线程1.2 程序员自己来掌握线程的中断2.线程不同状态的影响2.1 NEW | TERMINATED 无效2.2 RUNNABLE 有效2.3 BLOCKED 有效2.4 WAITING/TIMED_WAITING 有效且通过抛出异常来结束等待线程中断线程中断,如果说创建线程,启动线程,控制线程的生!那么中断线程就是控制线程的死!线程的生死大权在手,还怕掌控不了它们?1.JDK提供的APIJDK本身为我们提供了,两套线程中断的方法。第一原创 2021-06-26 22:21:18 · 186 阅读 · 0 评论 -
JMM——volatile关键字
文章目录volatile关键字1.可见性:2.有序性(volatile禁止指令重排序优化)2.1CPU硬件volatile关键字 volatile关键字是Java虚拟机提供的轻量级的同步机制。有以下两个作用:可见性: 保证被volatile修饰的共享变量对所有线程总是可见的。也就是当一个线程修改了被volatile修饰的变量的值,其他的线程立即可以感知到。有序性:禁止指令重排序。1.可见性: 当一个共享变量被volatile修饰后,其他的线程立刻就可以感知到。举例:没有volati原创 2021-06-20 19:40:21 · 119 阅读 · 0 评论 -
JMM——并发编程的常见问题
文章目录JMM特性JMM特性分类1.原子性JMM特性通过上一篇 JMM初识 我们充分了解什么是JMM,JMM的作用。凡物都有一个特性,所以此篇聊聊JMM的特性。JMM特性分类原子性有序性可见性1.原子性 何为原子性?高中物理课讲过,世界上物质的组成最小的单位是原子。(虽然科学家后来发现了夸克)。但是我们以课本为主,原子什么特性?单个且完整。到代码层面,程序的最小组成单位就是一段一段执行的代码,我们把每一次执行的一段代码,就称呼为具有原子性的代码。...原创 2021-06-20 05:56:19 · 259 阅读 · 0 评论 -
JMM——认识JMM
文章目录JMM(并发编程之内经)1.JMM(Java Memory Model)内存模型2.JMM区域划分2.1 共享内存2.2 工作内存3.基于JMM线程工作流程4.JMM线程模型多线程可能引发的安全问题5.数据同步的八大原子性操作同步规则分析JMM(并发编程之内经)时刻谨记JMM是一套抽象的规范,并不真实存在。但是我们不能去违背它。为什么要理解JMM?JMM是Java为了解决多线程并发等问题,提出了一套规范。并针对并发可能出现的一系列问题,基于此模型提供了多种解决方案。便于我们java程序员可以原创 2021-06-19 23:36:16 · 868 阅读 · 0 评论