自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 JUC包下并发容器

CopyOnWriteArrayList内部实现为ReentrantLock作为锁实现操作互斥Object[] 来存储数据 volatile修饰 保证可见性对数组进行元素变化时,通过复制一个新的数组实现 开销比较大该类的迭代器实现为 对原数组的快照进行操作 只能进行元素查询操作 不能进行元素修改操作实现了List接口,作为列表使用。实现了RandomAccess接口,支持快速随机索...

2019-08-20 11:40:01 352

原创 JUC锁小结

Lock接口定义用户调用规范。AQS实现锁,state表示同步状态,每个线程来获取该状态。双向队列来保存等待中的线程。阻塞、唤醒操作由LockSupport的park、unPark来实现。Condition等待唤醒机制,维持一个睡眠状态的线程队列。state 锁的同步状态waitStatus等待队列状态第一个线程过来获取锁时,直接获取成功。...

2019-08-19 11:15:45 214

原创 CAS和原子类

CAS一种在操作系统层实现的并发算法。Java中的原子包大量使用了该算法来简化多线程编程。当前内存值V 预期原值A 预期目标值B。当V==A时,将B赋值给变量,返回true,否则什么都不做,返false。在Java中,通过UnSafe类对操作系统底层的CAS进行封装。以AtomicInteger为例子,对源码实现进行分析;public class AtomicInteger ex...

2019-08-19 11:15:37 160

原创 读写锁

ReentrantReadWriteLock提供读和写分离的锁机制 WriteLock ReadLock当读线程获取锁时,允许其他线程获取锁,阻塞写线程。当写线程获取锁时,阻塞所有其他线程。读写都支持线程重入机制。锁状态采用按位分割的方式表示读写状态和重入次数。高16位表示读状态。在获取c == state之后,按位右移16位c>>>16获取读状态。读状态增加时,按位...

2019-08-19 11:15:29 116

原创 重入锁 公平锁 非公平锁

重入锁同一个线程可以多次获取同一个锁。synchronize关键字隐士的支持重入。JUC包下重入锁为ReentantLock,显示的提供来人锁重入功能,并且提供了获取锁的公平与非公平方式。在时间上,先请求获取锁的线程一定能够先与其后的线程获取锁为公平锁,否则为非公平锁。公平锁减少了发生饥饿的概率,但是效率低。非公平锁则提升了TPS,缺会使饥饿问题概率提升。重入的实现在于获取锁时,锁会保...

2019-08-19 11:15:13 130

原创 独占锁和共享锁

多线程访问共享变量存在数据同时修改导致不一致问题,就需要锁来对共享数据的访问进行管理。多个线程A B C 去竞争同一个锁L,存在线程获取锁的同步状态管理,排队获取锁,竞争获取锁,等待获取锁,释放锁唤醒其他等待中的线程问题。Java中的synchronized关键字是一种锁的实现,隐式的管理多线程与锁的问题,由JVM实现。JUC包下提供了显示锁来管理多线程和锁问题,Lock接口,...

2019-08-19 11:14:59 337

原创 线程池

线程池 Executor框架 参数 任务等待队列 拒绝策略coreSize 核心线程数maxSize 最大线程数https://www.jianshu.com/p/6c6f396fc88enewFixedThreadPool定长的线程池,核心线程数和最大线程数相等,任务超出可用线程数会进入等待队列。使用链表实现的阻塞队列,LinkedBlockingQueue,基于FIFO...

2019-08-16 17:06:54 130

原创 JVM类加载机制

JVM运行时需要把class文件加载到内存中,将class文件内容解析成jvm认识的数据结构,比如把类和类成员变量,类方法,运行时常量,类对应的class对象,并根据代码逻辑对类进行初始化,这一整个过程即是JVM的类加载过程。整个过程分为装载 验证 准备 解析 初始化五步。装载:JVM通过类的全限定名读取class文件到内存,转化为特定的数据结构存储到方法区之中,并生成类对应的Class对...

2019-07-30 15:28:45 78

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除