Solo  当前访客:0 开始使用

blog,blog,blog

blog,blog,blog
浏览数: 105490    文章总数: 90   

【Java多线程编程核心技术】读书笔记一 [synchronized]

synchronized

  1. synchronized锁定当前对象,对于同一个对象具有锁,多个对象多个锁。

  2. 对于setValue(),getValue() 均加上synchronized关键字才可以解决“脏读”。

  3. 关键字synchronized具有锁重入的功能(一个线程获得该对象的锁,此时锁没有释放,可以再次获得该对象的锁),支持父子类继承的环境。

  4. 出现异常时,锁自动释放。(线程A调用对象C的synchronized方法D发生异常,线程B仍然可以正常调用方法D,说明出现异常的锁被自动释放)

  5. 同步不具有继承性(子类重写父类方法是依然需要添加synchronized关键字)

  6. synchroinzed(this)同步代码块减少代码执行效率低的问题。

  7. synchroized(this)锁定的为当前对象。

  8. 当一个类中具有多个synchroized方法会影响运行效率,可以使用synchronized(非this 对象 x),不与其他synchronized(this)方法抢夺this锁,提高运行效率。(持有不同对象监视器实现异步效果)

  9. 将synchronized 方法加到 static 静态方法是对Class类上锁。Class锁对该类的所有对象实例起作用。