【文件属性】:
文件名称:java8集合源码分析-JUC:高并发与多线程
文件大小:118KB
文件格式:ZIP
更新时间:2021-06-04 17:56:15
系统开源
java8
集合源码分析
高并发与多线程
Stargazers
over
time
线程
线程的创建和启动
线程的sleep、yield、join
线程的状态
代码在
部分。
synchronized关键字(悲观锁)
synchronized(Object)
不能用String常量、Integer、Long。
锁住的是对象
代码
部分。
线程同步
synchronized锁的是对象,不是代码。
锁定方法和非锁定方法可以同步进行
synchronized优化:代码
部分
synchronized底层实现:
早期JDK中,synchronized是重量级的,即需要调用操作系统(OS)来申请锁。
后来改进了,有了锁的升级:
Java虚拟机中并没有严格规定synchronized需要如何实现,只要能满足锁住一个对象,一个一个线程的去执行其中的代码块即可。
sync(Object)锁住一个对象,这时会markWord,记录这个线程的ID,这时只有一个线程来,其实是没有锁住的,这时是偏向锁。即就一个线程,我偏向你。
当有锁的争用时:升级为自旋锁。即另一个线程会在CPU内打转,转圈等着,自旋10次,