1 加锁和释放锁的原理
- 现象
- 获取和释放锁的时机:内置锁
- 等价代码
- 深入JVM看字节码:反编译、monitor指令
package com.tzb.test.demo;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* @Description method1和methond2这两个方法是等价的
* @Author tzb
* @Date 2021/2/7 14:39
* @Version 1.0
**/
public class SynchronizedToLock13 {
Lock lock = new ReentrantLock();
public synchronized void method1(){
System.out.println("我是synchronized形式的锁");
}
public void method2(){
lock.lock();
try{
System.out.println("我是lock形式的锁");
}finally {
lock.unlock();
}
}
public static void main(String[] args) {
SynchronizedToLock13 s = new SynchronizedToLock13();
s.method1();
s.method2();
}
}
1.1 深入JVM看字节码
package com.tzb.test.demo;
/**
* @Description 反编译字节码
* @Author tzb
* @Date 2021/2/7 14:51
* @Version 1.0
**/
public class Decompliation14 {
private Object obj = new Object();
public void insert(Thread thread){
synchronized (obj){
}
}
}