并发编程
文章平均质量分 96
掌握多线程和并发编程,让你的程序飞起来
都要好好的O
本博客所记录的文章,本博客主要是用来记录我对所写文章的理解,若有错误,也请大家指点,相互学习!
展开
-
并发编程7-Lock锁系列 ReentrantLock
目录前言加锁目的Lock 锁的继承体系Lock 顶层接口分析可重入锁ReentrantLockReentrantLock公平锁和非公平锁是什么?有什么区别?ReentrantLock源码分析类的继承关系类的内部类Sync类NonfairSync类FairSyn类类的属性类的构造函数核心函数分析应用示例:参考推荐:前言加锁目的序列化访问临界资源,即同一时刻只能有一个线程访问临界资源(同步互斥访问)首先明确:Lock原创 2022-05-15 11:12:41 · 679 阅读 · 0 评论 -
并发编程6-同步器框架AQS
目录带着BAT大厂的面试问题去理解AbstractQueuedSynchronizer (抽象队列同步器框架)AQS具备的基本特性AQS 实现分析AQS 核心思想(重点)1. AQS内部维护属性2.AQS两种资源共享方式3.AQS定义两种队列AbstractQueuedSynchronizer源码分析类的继承关系AQS内部类1.类的内部类 -Node类2.类的内部类 - ConditionObject类AQS类的属性AQS类的构造方法AQS类.原创 2022-05-14 20:37:55 · 306 阅读 · 0 评论 -
并发编程5-原子类Atomic
目录什么是原子操作如何保证原子操作处理器如何实现原子操作1.处理器自动保证基本内存操作的原子性 (基于缓存行保证原子性)2.使用总线锁保证原子性 (基于锁总线保证原子性) 3.使用缓存锁保证原子性但是有两种情况下处理器不会使用缓存锁定。Java当中如何实现原子操作补充:原子类都是基于CAS 实现的操作 ,那么什么是CAS ?那么什么是乐观锁?乐观锁: 自旋与阻塞原子类讲解基本类型原子类...原创 2022-05-13 17:25:16 · 199 阅读 · 0 评论 -
并发编程4-CAS和魔术类Unsafe
¶什么是CASCAS的全称为Compare-And-Swap,直译就是对比交换。是一条CPU的原子指令,其作用是让CPU先进行比较两个值是否相等,然后原子地更新某个位置的值,经过调查发现,其实现方式是基于硬件平台的汇编指令,就是说CAS是靠硬件实现的,JVM只是封装了汇编调用,那些AtomicInteger类便是使用了这些封装后的接口。CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值 。否则,处理器不原创 2022-05-13 21:15:08 · 215 阅读 · 0 评论 -
并发编程3-synchronized
带着疑问去学习,Synchronized可以作用在哪里? 分别通过对象锁和类锁进行举例。 Synchronized本质上是通过什么保证线程安全的? 分三个方面回答:加锁和释放锁的原理,可重入原理(当线程拥有Monitor权限时,重新进入将会将),保证可见性原理。 Synchronized在使用时有何注意事项? Synchronized修饰的方法在抛出异常时,会释放锁吗? 多个线程等待同一个snchronized锁的时候,JVM如何选择下一个获取锁的线程? Synchronized使得同时只有一原创 2022-05-12 17:20:47 · 325 阅读 · 0 评论 -
多线程及并发编程之线程池一
为什么使用线程池呢?Java中的线程池是运用场景最多的并发框架,但思考下为什么要使用线程池呢?(1)降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。(2)提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。(3)提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是如果想要合理的使用线程池必须呀要理解其原理,才能应用的得心应手 ;线程池的实现原理思考.原创 2022-03-24 21:22:07 · 1483 阅读 · 2 评论