zoukankan      html  css  js  c++  java
  • synchronize的心得

    记录一下synchronize(this)、synchronize(A.class)、private B  b= new B(); synchronize(b) 、synchronize static(A.class)的使用。

                     其中synchronize(this) 锁的是当前对象,它的使用和private B  b= new B(); synchronize(b) 一致,但是如果在一个类中,两个方法一个使用的synchronize(this)一个使用了private B  b= new B(); synchronize(b)  这还是异步操作,因为这是锁的两个对象。如果两个方法都是用synchronize(this)或者都是用private B  b= new B(); synchronize(b)这两个中的一种,则这两个方法会阻塞,方法间竞争锁。

                     synchronize(A.class)和synchronize static(A.class)本质一样,都是class级别的锁,打个比方:

                                 A a  = new A();

                                 A a1 = new A();

                      起两个线程共同处理A的一个同步方法,会顺序执行。而如果是使用synchronize(this) 则因为两个对象,所以会异步执行奥。抽空这里弄点例子。呼呼哈嘿。

    另外针对String类型的值做为锁对象时,一定要保证锁对象不能改变,个人建议还是尽量不要用String类型的数据做为锁对象。

  • 相关阅读:
    单词 统计
    第九周周进度报告
    日常总结
    Docker 初识
    读书笔记
    《未来简史》有感
    自己的Java规范文档
    nginx自动部署脚本
    jdk 自动化脚本
    我Java学习时的模样(三)
  • 原文地址:https://www.cnblogs.com/jiligalaer/p/5323348.html
Copyright © 2011-2022 走看看