
java多线程
文章平均质量分 94
程序猿阿星
4年经验的Java程序猿,热爱技术,喜欢研究底层原理,有志同道合的猿类可以找我一起交流讨论~
公众号 : 「程序猿阿星」,欢迎关注
展开
-
33张图解析ReentrantReadWriteLock源码
大家好,我是阿星,今天是一篇硬核文,请各位读者大大们系好安全带,马上要发车了。晕车的朋友,可以先吃一颗阿星独家秘制的晕车药,童叟无欺,货真价实,还免费,白嫖党狂喜(16张图揭开AQS)。本文大纲如下纵观全局我的英文名叫ReentrantReadWriteLock(后面简称RRW),大家喜欢叫我读写锁,因为我常年混迹在读多写少的场景。读写锁规范作为合格的读写锁,先要有读锁与写锁才行。所以声明了ReadWriteLock接口,作为读写锁的基本规范。之后都是围绕着规范去实现读锁与写锁。读锁原创 2021-06-30 09:49:38 · 393 阅读 · 0 评论 -
图解Java线程状态转换
大家好,我是阿星,好久不见,欢迎来到Java并发编程系列番外篇线程状态转换,内容通俗易懂,请放心食用。线程状态先来个开场四连问Java线程状态有几个?Java线程状态是如何转换?Java线程状态转换什么情况会进入锁的等待队列?Java线程状态转换什么情况会进入锁的同步队列?一提到Java线程状态,不少读者立马想到线程状态转换图,但细想,印象又不深刻,只记得有那么几个状态。再要你说出Java线程状态是如何转换的,脑子里可能就如下图一样,已经是一团浆糊了。别慌,阿星为了帮原创 2021-06-17 08:11:49 · 688 阅读 · 0 评论 -
ReentrantReadWriteLock的位运算解析
大家好,我是阿星,欢迎来到Java并发编程系列第六篇ReentrantReadWriteLock基础,今天我们来聊一聊读写状态的设计。我相信不少读者,在看JDK源码时,会看到位运算代码,可能有些人和阿星一样是转行的,缺乏计算机相关的基础知识,看的是一头雾水。导致有些人直接被劝退,也有些人选择理解字面上的意思,细节跳过。但是一颗疑惑的种子在我们心中埋了下来「为什么使用位运算就能达到这样的效果?」。恰好ReentrantReadWriteLock读写状态的设计用到了位运算,我们以此来展开今天的话题。原创 2021-05-26 07:30:29 · 359 阅读 · 1 评论 -
趣谈ReentrantLock,看完直呼通俗易懂
前言自己开的坑,跪着也要填完,欢迎来到Java并发编程系列第五篇ReentrantLock,文章风格依然是图文并茂,通俗易懂,本文带读者们深入理解ReentrantLock设计思想。如果读过阿星写的前篇万字长文 | 16张图解开AbstractQueuedSynchronizer,本篇的效果拉满,未读过也没关系,依然能get到ReentrantLock原理。认识下ReentrantLock阿星先带读者们和ReentrantLock见个面,简单的认识下什么是ReentrantLock。Reentra原创 2021-04-22 14:06:28 · 8936 阅读 · 28 评论 -
深入理解AbstractQueuedSynchronizer只需15张图
前言Java并发编程系列第四篇AbstractQueuedSynchronizer,文章风格依然是图文并茂,通俗易懂,本文带读者们深入理解AbstractQueuedSynchronizer设计思想。内容大纲基础AbstractQueuedSynchronizer抽象同步队列简称A Q S,它是实现同步器的基础组件,如常用的ReentrantLock、Semaphore、CountDownLatch等。A Q S定义了一套多线程访问共享资源的同步模板,解决了实现同步器时涉及的大量细节问题,能够极原创 2021-04-16 12:51:29 · 3101 阅读 · 11 评论 -
写给小白看的LockSupport
前言Java并发编程系列第三篇LockSupport,上一篇Synchronized文章中有提过,不推荐读者们使用Object的wait、notify、notifyAll等函数做多线程间的通信协同,使用LockSupport会是更好的选择,本篇就来谈谈LockSupport,也正好为下篇的A Q S(AbstractQueuedSynchronized)打基础。内容大纲LockSupport基本概念LockSupport是线程工具类,主要作用是阻塞和唤醒线程,底层实现依赖Unsafe,同时它还是锁原创 2021-04-06 13:11:09 · 796 阅读 · 7 评论 -
BAT面试多线程最常问的一个问题:谈谈你对Synchronized的理解?
前言Java并发编程系列第二篇Synchronized,文章风格依然是图文并茂,通俗易懂,本文带读者们由浅入深理解Synchronized,让读者们也能与面试官疯狂对线。在并发编程中Synchronized一直都是元老级的角色,Jdk 1.6以前大家都称呼它为重量级锁,相对于J U C包提供的Lock,它会显得笨重,不过随着Jdk 1.6对Synchronized进行各种优化后,Synchronized性能已经非常快了。内容大纲Synchronized使用方式Synchronized是Java提原创 2021-03-26 12:51:33 · 3675 阅读 · 11 评论 -
由浅入深CAS原理,小白也能与BAT面试官对线
前言Java并发编程系列番外篇C A S(Compare and swap),文章风格依然是图文并茂,通俗易懂,让读者们也能与面试官疯狂对线。C A S作为并发编程必不可少的基础知识,面试时C A S也是个高频考点,所以说C A S是必知必会,本文将带读者们深入理解C A S。大纲C A S基本概念C A S(compareAndSwap)也叫比较交换,是一种无锁原子算法,映射到操作系统就是一条cmpxchg硬件汇编指令(保证原子性),其作用是让C P U将内存值更新为新值,但是有个条件,内存值原创 2021-03-20 20:49:34 · 696 阅读 · 2 评论 -
小白也能看懂的Java内存模型
前言Java并发编程系列开坑了,Java并发编程可以说是中高级研发工程师的必备素养,也是中高级岗位面试必问的问题,本系列就是为了带读者们系统的一步一步击破Java并发编程各个难点,打破屏障,在面试中所向披靡,拿到心仪的offer,Java并发编程系列文章依然采用图文并茂的风格,让小白也能秒懂。Java内存模型(Java Memory Model)简称J M M,作为Java并发编程系列的开篇,它是Java并发编程的基础知识,理解它能让你更好的明白线程安全到底是怎么一回事。内容大纲硬件内存模型程序原创 2021-03-09 14:28:39 · 2405 阅读 · 15 评论 -
保姆级教学,22张图揭开ThreadLocal
目录前言内容大纲Java对象引用级别强引用(StrongReference)软引用(SoftReference)弱引用(WeakReference)虚引用(PhantomReference)ThreadLocalThreadLocal是什么ThreadLocal源码为何采用弱引用源码图内存图源码图内存图remove背后的意义唠叨唠叨关于我前言本文采用图解方式来带大伙通关 ThreadLocal ,同时我希望大伙有一定的 J V M 基础,这样食用起来会更香。相信大伙对 ThreadLocal 并不陌生原创 2021-01-03 18:48:55 · 1570 阅读 · 5 评论