JAVA多线程与高并发
文章平均质量分 90
多线程与高并发
认真的老去
这个作者很懒,什么都没留下…
展开
-
线程安全(一)java对象头分析以及锁状态
对象头和锁状态原创 2020-04-09 17:55:18 · 1004 阅读 · 1 评论 -
线程安全(二)java中的CAS机制
java中的CAS机制原创 2017-12-11 18:25:35 · 1864 阅读 · 0 评论 -
线程安全(三)实现方法sychronized与ReentrantLock(阻塞同步)
sychronized和lock原创 2020-04-14 16:22:39 · 1211 阅读 · 0 评论 -
线程安全(四)Java内存模型与volatile关键字
volatile原创 2020-04-16 17:35:03 · 286 阅读 · 0 评论 -
线程安全(五)线程状态和线程创建
本文写了线程的状态与创建方式,以及如何在java和jvm里如何存储。原创 2020-04-23 14:22:34 · 531 阅读 · 0 评论 -
线程安全(六)线程池
线程池1.Executor 与ExecutorService接口1.1.Executor接口// 提交任务的办法void execute(Runnable command);1.2.ExecutorService接口 // 关闭线程池,已提交的任务继续执行,不接受继续提交新任务 void shutdown(); // 关闭线程池,尝试停止正在执行的所有...原创 2020-05-02 15:12:53 · 1076 阅读 · 1 评论 -
线程安全(七)ThreadLocal和java的四种引用
1.JAVA四种引用类型1.1.强引用处于可达状态,JVM不会回收,没有任何引用指向时,就被回收了,是内存泄漏的主要原因1.2.软引用SoftReference,垃圾回收机制运行,不会回收,内存一旦不够,就回收(-Xmx),常用于缓存1.3.弱引用WeakReference,垃圾回收机制一运行,就回收,ThreadLocal有使用。ThreadLocal// set方法 publ...原创 2020-05-02 17:03:53 · 479 阅读 · 0 评论 -
线程安全(八)Semaphore
0.前言Semaphore :信号量,使用AQS类型的同步状态持有当前可用许可的数量。1.方法分析1.1.构造方法:Semaphore(int permits):创建具有给定许可数的计数信号量并设置为非公平信号量。Semaphore(int permits,boolean fair):当fair等于true时,创建具有给定许可数的计数信号量并设置为公平信号量。1.2.方法void acquire():从此信号量获取一个许可前线程将一直阻塞。void acquire(int n):从此信号量原创 2020-06-05 11:12:48 · 645 阅读 · 1 评论 -
线程安全(九)CyclicBarrier
0.前言障碍器类,循环栅栏看过源码。此工具类依靠Condition和ReetrantLock实现了屏障功能,当所有子任务执行完成,屏障解除,下一任务才会继续,而且屏障会恢复。1.源码解析1.1.属性 // 可重入锁 private final ReentrantLock lock = new ReentrantLock(); /** Condition to wait on until tripped */ // 条件 private final Conditi原创 2020-06-22 17:40:06 · 384 阅读 · 0 评论 -
线程安全(十)AQS(AbstractQueuedSynchronizer)
0.以ReentrantLock切入aqs全称为AbstractQueuedSynchronizer,它提供了一个FIFO队列,可以看成是一个用来实现同步锁以及其他涉及到同步功能的核心组件AQS是一个抽象类,主要是通过继承的方式来使用,它本身没有实现任何的同步接口,仅仅是定义了同步状态的获取以及释放的方法来提供自定义的同步组件。AQS独占 和 共享前言:首选说一下AQS的实现机制,它提供了一个FIFO队列,所有未获取锁的对象都会放入这个对列,然后,每个线程都会轮询访问,只有前驱是head节点,以及原创 2020-09-15 17:40:50 · 350 阅读 · 0 评论 -
线程安全(十一)ConcurrentLinkedQueue的原理以及CAS机制在其中的应用
ConcurrentLinkedQueue是一个线程安全队列,区别于阻塞算法的锁机制,它使用了基于CAS机制的非阻塞算法。原创 2017-12-13 17:03:04 · 922 阅读 · 0 评论