高并发与多线程
文章平均质量分 94
月东坡半
冲!
展开
-
Semaphore源码分析
JAVA后端开发知识总结(持续更新…) Semaphore源码分析 文章目录Semaphore源码分析零、前言一、概述二、常用方法2.1 非公平锁实现——nonfairTryAcquireShared()2.2 公平锁实现——tryAcquireShared()2.3 释放信号量——tryReleaseShared()实现 零、前言 在阅读本篇文章前,建议先学习下面两篇文章: 《AQS源码解析》 《await和signal源码解析》 一、概述 Semaphore(信号量)常用于流量控制,结构和R.原创 2021-05-19 21:35:50 · 118 阅读 · 0 评论 -
CyclicBarrier源码分析
JAVA后端开发知识总结(持续更新…) CyclicBarrier源码分析 文章目录CyclicBarrier源码分析零、前言一、CyclicBarrier 与 CountdownLatch 的区别二、概述三、常用方法3.1 nextGeneration()——开启新的一代3.2 breakBarrier()3.3 reset()3.4 await() 与 await(long timeout, TimeUnit unit)3.4.1 dowait() 零、前言 在阅读本篇文章前,建议先学习下面两篇.原创 2021-05-19 20:25:40 · 281 阅读 · 0 评论 -
CountDownLatch源码分析
JAVA后端开发知识总结(持续更新…) CountDownLatch源码分析 文章目录CountDownLatch源码分析零、前言一、概述二、常用方法2.1 countDown()——tryReleaseShared()的实现2.2 await()——tryAcquireShared()的实现 零、前言 在阅读本篇文章前,建议先学习下面两篇文章: 《AQS源码解析》 《await和signal源码解析》 一、概述 CountDownLatch 是为了解决某些操作只能在一组操作全部执行完成后才能执.原创 2021-05-18 20:17:45 · 251 阅读 · 0 评论 -
ReentrantLock源码分析
JAVA后端开发知识总结(持续更新…) ReentrantLock源码分析 文章目录ReentrantLock源码分析一、Lock接口二、ReentrantLock2.1 概述 一、Lock接口 public interface Lock { // 四种获取锁的方式 void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLock.原创 2021-05-18 19:14:44 · 115 阅读 · 0 评论 -
await和signal源码解析
JAVA后端开发知识总结(持续更新…) Condition接口源码解析 文章目录Condition接口源码解析一、概述1.1 与wait/notify机制的对比1.2 条件队列与CLH队列 一、概述 看这篇文章前,最好先了解AQS的原理:《AQS源码解析》。 1.1 与wait/notify机制的对比 Condition接口的方法: Condition接口的await/signal机制是针对监视器monitor的wait/notify机制的不足进行改进设计的。其方法对比如下所示: .原创 2021-04-01 16:05:18 · 623 阅读 · 0 评论 -
ThreadLocal详解
JAVA后端开发知识总结(持续更新…) ThreadLocal详解 文章目录ThreadLocal详解一、概述二、源码分析2.1 set()2.2 threadLocals 和 ThreadLocalMap2.3 get()三、内存泄漏 一、概述 ThreadLocal提供了线程的局部变量,只有当前线程可以访问。每个线程都可以通过set()和get()来对这个局部变量进行操作,它实现了线程的数据隔离,每一个线程都有自己的共享变量。 需要注意的是,为线程分配对象不由ThreadLocal自动.原创 2021-03-30 22:31:03 · 222 阅读 · 0 评论 -
ConcurrentHashMap源码详解
JAVA后端开发知识总结(持续更新…) ConcurrentHashMap源码详解 文章目录ConcurrentHashMap源码详解一、1.7和1.8的ConcurrentHashMap异同二、1.8中的主要方法源码解析2.1 put()2.2 get()参考文档 一、1.7和1.8的ConcurrentHashMap异同 都不允许key和value为null,否则会抛出异常。 和HashMap的功能基本一致,重点解决了HashMap多线程的不安全问题。 安全并发实现原理: JDK1.7中的.原创 2021-03-22 17:53:52 · 403 阅读 · 0 评论 -
AQS源码解析
JAVA后端开发知识总结(持续更新…) AQS源码解析 文章目录AQS源码解析一、AQS简介 一、AQS简介 AQS(AbstractQuenedSynchronizer)是抽象的队列式同步器框架,是除了java自带的synchronized关键字之外的锁机制。 AQS的核心思想在于,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并将共享资源设置为锁定状态,如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制AQS是用CLH队列锁实.原创 2021-03-21 22:21:58 · 498 阅读 · 0 评论 -
synchronized详解
JAVA后端开发知识总结(持续更新…) synchronized详解 文章目录synchronized详解三、锁优化monitor 简介 synchronized关键字在需要原子性、可见性和有序性这三种特性的时候都可以作为其中一种解决方案,很多人都会称呼它为重量级锁,随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。 Synchr.原创 2021-03-21 17:13:32 · 724 阅读 · 1 评论 -
ConcurrentLinkedQueue源码
JAVA后端开发知识总结(持续更新…) ConcurrentLinkedQueue源码解析 文章目录ConcurrentLinkedQueue源码解析一、ConcurrentLinkedQueue简介及基本结构二、ConcurrentLinkedQueue的常用方法解析2.1 入队方法offer() 一、ConcurrentLinkedQueue简介及基本结构 ConcurrentLinkedQueue是可以用来实现高并发的无界线程安全队列,底层是一个单向链表。它采用非阻塞算法,通过循环CAS保.原创 2021-03-20 17:51:40 · 214 阅读 · 0 评论