zoukankan      html  css  js  c++  java
  • 类锁,对象锁,私有锁

    1. 类锁:在代码中的方法上加了static和synchronized的锁,或者synchronized(xxx.class)的代码段

    2.对象锁:在代码中的方法上加了synchronized的锁,或者synchronized(this)的代码段

    3.私有锁:在类内部声明一个私有属性如private Object lock,在需要加锁的代码段synchronized(lock)

    对象锁:假设我有一个类ClassA,其中有一个方法synchronized methodA(),那么当这个方法被调用的时候你获得就是对象锁。

    举例:ClassA a = new ClassA(); ClassA b = new ClassA(); 那么如果你在a这对象上调用了methodA,不会影响b这个对象,也就是说对于b这个对象,他也可以调用methodA,因为这是两对象,所以说对象锁是针对对象的

    类锁,其实没有所谓的类锁,因为类锁实际上就是这个类的对象的对象锁

    举例:我有一个类ClassA,其中有一个方法synchronized static methodA(),注意这个方法是静态的了,那就是说这个类的所有的对象都公用一个这个方法了,那如果你在这个类的某个对象上调用了这个方法,那么其他的对象如果想要用这个方法就得等着锁被释放,所以感觉就好像这个类被锁住了一样。

    类锁和对象锁不会产生竞争,二者的加锁方法不会相互影响。

  • 相关阅读:
    centos7安装YouCompleteMe,vim打造成C++的IDE
    java循环定时器@Scheduled的使用
    js使用“toFixed( )”保留小数点后两位
    linux小本
    解决Maven资源过滤问题
    在Maven普通项目上添加Web app的支持
    项目中添加lib依赖
    回顾Servlet
    Tomcat 中文乱码
    Initialization failed for 'https://start.spring.io' Please check URL
  • 原文地址:https://www.cnblogs.com/wutianlong/p/5383607.html
Copyright © 2011-2022 走看看