对象锁&类锁
对象锁
当一个对象中有synchronized method或synchronized block的时候调用此对象的同步方法或进入其同步区域时,就必须先获得对象锁。如果此对象的对象锁已被其他调用者占用,则需要等待此锁被释放
同步静态方法/静态变量互斥体
由于一个class不论被实例化多少次,其中的静态方法和静态变量在内存中都只由一份。所以,一旦一个静态的方法被申明为synchronized。此类所有的实例化对象在调用此方法,共用同一把锁,我们称之为类锁。一旦一个静态变量被作为synchronized block的mutex。进入此同步区域时,都要先获得此静态变量的对象锁
类锁
由上述同步静态方法引申出一个概念,那就是类锁。其实系统中并不存在什么类锁。当一个同步静态方法被调用时,系统获取的其实就是代表该类的类对象的对象锁
在程序中获取类锁
可以尝试用以下方式获取类锁
synchronized (xxx.class) {...}
synchronized (Class.forName("xxx")) {...}
同时获取2类锁
同时获取类锁和对象锁是允许的,并不会产生任何问题,但使用类锁时一定要注意,一旦产生类锁的嵌套获取的话,就会产生死锁,因为每个class在内存中都只能生成一个Class实例对象。

Java Synchronized获得类的锁和获得对象的锁有什么区别呢?相关推荐

  1. java查看对象锁级别_对象级别锁 vs 类级别锁(Java)

    前言 对于多线程(并发)和Spring Boot这两块在同步进行学习中,在看到使用synchronized关键字使操作同步时,看到和C#中不一样的东西,所以这里呢,就深入学习了下,若有错误之处,还望指 ...

  2. java 类锁如何获得_Java Synchronized获得类的锁和获得对象的锁有什么区别呢?

    对象锁&类锁 对象锁 当一个对象中有synchronized method或synchronized block的时候调用此对象的同步方法或进入其同步区域时,就必须先获得对象锁.如果此对象的对 ...

  3. java中File类中list()和listFiles()方法区别

    list()和listFiles()方法区别: 1.返回值类型不同:前者为String数组,后者为File对象数组 2.数组中元素内容不同:前者为string类型的[文件名](包含后缀名),后者为Fi ...

  4. 在Java中,采用类的默认构造函数构造对象的方法!

    示例代码如下: URL pageURL = new URL(path); 其中URL是一个类,pageURL是对象!

  5. 【新手入门.考试高频】Java中“一个类声明的两个对象如果有相同的引用,二者就有相同的变量”的理解

    <全文仅为个人学习记录,如有错误欢迎指正> 直接来看一道题. 说出下列E类中[代码1]~[代码3]的输出结果. [答案] 1 121 121 class Fish {int weight ...

  6. java synchronized 使用_Java中Synchronized的用法

    synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码 ...

  7. java synchronized块_Java多线程同步代码块Synchronized

    Java多线程同步代码块Synchronized Java中的每个对象都有一个与之关联的内部锁(Intrinsic lock). 这种锁也称为监视器(Monitor), 这种内部锁是一种排他锁,可以保 ...

  8. 【零基础学Java】—Socket类(五十五)

    [零基础学Java]-Socket类(五十五) Socket类:该类实现客户端套接字,套接字是指两台设备之间通讯的端点. 在Java中,提供了两个类用于实现TCP通信程序 客户端:java.net.S ...

  9. java .class 实例对象_Java产生Class类的三种实例化对象的方法

    Java产生Class类的三种实例化对象的方法 1.object.getClass 2.类名.class直接根据某个具体的类来取得Class实例化对象 3.Class.forName(String c ...

最新文章

  1. GPU 「抗压」不行还费电,FPGA将成深度学习「新基建」
  2. 如何从Subversion存储库中git-svn克隆最后n个修订版?
  3. java封装Mongodb3.2.1工具类
  4. [转]Windows Shell 编程 第十一章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987992】...
  5. boost::callable_traits是否为is_volatile_member的测试程序
  6. Delphi环境中编写调用DLL的方法和技巧
  7. matlab武汉理工大学数值分析线性函数拟合实验_「首席架构师推荐」数值计算库精选...
  8. java内部类为什么使用很少_Java内部类你真的会吗?
  9. Java--工厂模式
  10. Atitit 在线机器人 自动化技术一览 目录 1. 俩个要点 1 1.1. 识别控件(对话框 按钮 列表等) 1 1.2. Dom控件操作 1 1.3. 鼠标键盘操作 api 1 2. 可以使用
  11. android 反色 java_安卓实现图片反色,改色-ColorMatrixColorFilter
  12. 产品初探:银行理财产品简介
  13. 谈胶印机供水装置调节的技巧
  14. 程序化广告实战分享系列 - 程序化广告的前世今生及趋势(入门)
  15. 数据可能只有在你眼里才一文不值
  16. TOJ 5238: C实验:变量交换函数
  17. 【转】26张PPT让你告别拖延症
  18. 前端面试查漏补缺--(二) 垃圾回收机制
  19. 积分电路和微分电路的特点
  20. mysql关系运算_数据库关系运算

热门文章

  1. 计算机组装与维修单元卷,计算机组装与维修期中考试试卷及答案
  2. return true Java_[Java教程]js中return,return true,return false的用法及区别
  3. W1000变频器如何设定频率_变频器参数如何设定,参数故障处理办法
  4. 动态数组怎么定义_动态规划最长回文子序列
  5. mqttnet 详解_MQTTnet 3.0.5学习笔记
  6. 教你快速撸一个免费HTTPS证书
  7. 搞容器,必须考虑这五大安全要素
  8. 解决 Django 后台上传图片前端无法展示
  9. Laravel学习笔记之Decorator Pattern
  10. Array.asList:数组转list时你一定要知道的“陷阱”!