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 锁对该类的所有对象实例起作用。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于