文章目录
1.Synchronized和ReentrantLock相似点
提到Synchronized不得不提和ReentrantLock
二者相似点:
1.1:加锁方式同步,阻塞式同步。
1.2:都是独占锁,只允许线程互斥的访问临界区。
1.3:.ReentrantLock和synchronized都是可重入的。synchronized因为可重入因此可以放在被递归执行的方法上,且不用担心线程最后能否正确释放锁;而ReentrantLock在重入时要却确保重复获取锁的次数必须和重复释放锁的次数一样,否则可能导致其他线程无法获得该锁。
2.效率低的原因
核心原因:进行线程阻塞和唤醒的代价较高。
深层原因:线程的阻塞和唤醒,操作系统需要在用户态与内核态之间切换
2.1.用户态到内核态几种情况
2.1.1:系统调度
2.1.2:异常
2.1.3:外围设备的终端
2.2.用户态到内核态的过程
a)从当前进程的描述符中提取其内核栈的ss0及esp0信息
b)使用ss0及esp0指向内核栈,见当前进程的信息保存起来(也就是中断现场)
c)将先前由中断向量检索得到的中断处理程序的信息装入相应的寄存器,开始执行中断处理程序,这时就撞到了内和态的程序执行了(恢复现场)。