synchronized内置锁的介绍
重要的网址 1. https://www.cnblogs.com/charlesblc/p/5994162.html synchronized锁的优化过程很全面 2. https://www.cnblogs.com/skywang12345/ 系列教程 一、什么是synchronized? synchronized 是Java提供的一个并发控制的关键字,作用于对象上。主要有两种用法,分别是同步方法(访问对象和clss对象)和同步代码块(需要加入对象),保证了代码的原子性和可见性以及有序性,但是不会处理重排序以及代码优化的过程,但是在一个线程中执行肯定是有序的,因此是有序的。 二、synchronized的基本原理 原理是借用对象markword中的标记以及monitor监控器生成monitorEnter以及monitorExit指令以及对应的计数器。 三、jdk1.6之后的synchronized 在jdk1.6之前,synchronized是非常重量级的,因为它会无时无刻进行锁住对象,而不考虑到程序实际的竞争情况,大多数程序在都是进行交替执行,也就是说不存在资源的竞争,如果没有竞争,但是加锁,加锁和解锁是非常耗费性能的,(重量级)因为线程之间的切换以及线程从内核态到用户态的时间是耗费性能的。 在jdk1.6之后,sun公司对synchronized进行了大幅度的优化