04 2019 档案

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

点击右上角即可分享
微信分享提示