04 2019 档案
摘要:加锁和释放锁的原理 当方法执行完后或者抛出异常后,都会释放锁 method1等价于method2,因为method1执行完以后会自动释放锁,而么method2使用lock.unlock()释放锁 反编译看monitor指令 被 synchronized 关键字修饰的方法、代码块,就是 monitor
阅读全文
摘要:Synchronized可重入性质 * 什么是可重入:指的是同一线程的外层函数获得锁之后,内层函数可以直接再次获取该锁,而不是释放当前的锁去重新获取一个锁,这是它的一个优点 * 好处:避免死锁,提升封装性 * 粒度:是线程范围而非调用范围 情况一:同一个方法是可以重入的 情况二:不同方法是可以重入的
阅读全文
摘要:1. 2. 3 4.同时访问同步方法和非同步方法 synchronized只作用于用它修饰的方法,没有加synchronized 的方法不会受到影响, 如图可以看出加了synchronized修饰符的方法和没有加的方法是同步执行的,也就是说互不影响 5.同时访问一个类的普通同步方法 对于同一个实例来
阅读全文
摘要:作用:能够保证在同一时刻最多有一个线程执行该段代码,以保证并发的安全性。(当第一个线程去执行该段代码的时候就拿到锁,并独占这把锁,当方法执行结束或者一定条件后它才释放这把锁,在没释放锁之前,所有的线程处于等待状态) 不控制高并发的后果: 预期值本来是20000,但是没有控制并发,所以结果不一样 原因
阅读全文