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(),注意这个方法是静态的了,那就是说这个类的所有的对象都公用一个这个方法了,那如果你在这个类的某个对象上调用了这个方法,那么其他的对象如果想要用这个方法就得等着锁被释放,所以感觉就好像这个类被锁住了一样。

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

  • 相关阅读:
    mysql读写分离
    redis和memcached的区别(总结)
    MySQL常见面试题
    mysql查询优化
    mysql中enum类型
    ySQL性能优化的21个最佳实践 和 mysql使用索引
    如何选择mysql存储引擎
    Windows10右键添加"在此处打开命令窗口"
    centos7下安全访问远程服务器
    常用http/https以及socks5代理总结
  • 原文地址:https://www.cnblogs.com/wutianlong/p/5383607.html
Copyright © 2011-2022 走看看