java锁相关Synchronized 锁升级过程(原理,使用)
# Synchronized 使用-原理
## 锁的概念

## Synchronized 是互斥锁(独占锁)

### 对象锁-类锁

- 加锁就是利用CAS的特性去修改this,那个线程修改成功就抢到了锁

## this
- this 关键字用来表示当前对象本身,或当前类的一个实例,通过 this 可以调用本对象的所有方法和属性
## 锁消除 一个线程

## 锁粗化 多个线程

## notifyall
notify() 方法随机唤醒对象的等待池中的一个线程,进入锁池-不公平锁,(公平锁:唤醒等待池的头部线程)
notifyAll() 唤醒对象的等待池(等待队列)中的所有线程,进入锁池。
1.先加锁在挂起,2,先唤醒在挂起

## 锁升级
- 2个线程抢锁,当一个线程抢到了锁,另一个线程会不停的自旋,占用cpu资源,当自旋过一定次数,就会进行锁升级,从轻量级锁升到重量级锁。
- 重量级锁,会将没抢到锁的线程加入等待队列,等待被唤醒。
## Synchronized 锁升级 解锁

==Synchronized (对象)==
- 对象在加锁之前有两种状态,未锁定就是没有加锁
1.开启偏向锁(未锁定)
2.关闭偏向锁(未锁定)

## Synchronized / lock (优点-缺点)
