Java中的‘锁’- synchronized、ReentrantLock、ReentrantReadWriteLock
1、隐式锁 对称线程同步 synchronized 用法:1、在方法声明时使用;2、修饰代码块中使用 隐式规则 1、当两个并发线程访问同一个对象object中的synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行 2、当一个线程访问object的一个synchronized(this)同步代码块时,其他的线程可以访问该object中的非synchronized(this)同步代码块 3、synchronized(this)设置的对象锁中,当一个线程访问获取到锁,其他线程对object中相同对象锁的代码块都无法访问 性能和执行效率: 同步方法体<同步代码块 <synchronized(this)<同步代码块(byte锁) 如图1-2 图1-2 关于效率高低的判断,其实记住一点,锁时一个对象,加锁和释放锁都需要资源,对象越小效率越高 2、显式锁Lock和ReentrantLock Lock只是一个接口,它规定了锁的基础操作规范 如图2-1所示 图2-1 1、Lock()方法,线程获取锁,如果...