blog,blog,blog
blog,blog,blog【Java多线程编程核心技术】读书笔记一 [synchronized]
synchronized
-
synchronized锁定当前对象,对于同一个对象具有锁,多个对象多个锁。
-
对于setValue(),getValue() 均加上synchronized关键字才可以解决“脏读”。
-
关键字synchronized具有锁重入的功能(一个线程获得该对象的锁,此时锁没有释放,可以再次获得该对象的锁),支持父子类继承的环境。
-
出现异常时,锁自动释放。(线程A调用对象C的synchronized方法D发生异常,线程B仍然可以正常调用方法D,说明出现异常的锁被自动释放)
-
同步不具有继承性(子类重写父类方法是依然需要添加synchronized关键字)
-
synchroinzed(this)同步代码块减少代码执行效率低的问题。
-
synchroized(this)锁定的为当前对象。
-
当一个类中具有多个synchroized方法会影响运行效率,可以使用synchronized(非this 对象 x),不与其他synchronized(this)方法抢夺this锁,提高运行效率。(持有不同对象监视器实现异步效果)
-
将synchronized 方法加到 static 静态方法是对Class类上锁。Class锁对该类的所有对象实例起作用。