以前记得被问到一个面试题,问synchronized(obj){} 和 synchronized(xx.class){}有什么区别。当时还答的不好。

用比喻来说,java内置锁(Monitor)就像一个毛坑,第一种情况这个毛坑存在于obj中,一个对象只有一个毛坑,这个毛坑被一个线程占了那其他的线程就必须排队。但对于不用的对象,每个对象的毛坑是独立的,也就是线程1和线程2可以同时占住obj1和obj2的毛坑,这两个可以并发并不会互相排斥。

而第二种情况这个毛坑存在于Class对象中。Class对象应该就一个,所以所有线程只能一个一个地在这段同步代码块上排队,是完全排他的。

While a thread is executing a method of a thread-safe object, it is said to occupy the object, by holding its mutex (lock). Thread-safe objects are implemented to enforce that at each point in time, at most one thread may occupy the object.

转载于:https://www.cnblogs.com/zjhgx/p/8557473.html

聊聊Synchronized相关推荐

  1. 从青铜到王者,来聊聊 Synchronized 底层实现原理 | 原力计划

    作者 | IT贱男 责编 | 夕颜 出品 | CSDN(ID:CSDNnews) 引言 这篇文章码了小编***个小时,点个赞不过分吧-- 文本内容有点多,如果有写错或者不好地方,还请多多指教----- ...

  2. 聊聊Synchronized和Lock

    目录 Synchronized和Lock的区别 阻塞线程状态不同 Synchronized实现原理 锁的是对象,而非代码 monitorenter和monitorexit指令 JDK6的锁优化 锁消除 ...

  3. 大牛手把手教你!一起来聊聊Synchronized底层实现原理

    前言 Java作为最全面的语言,国内开发者也是最多的,Java综合起来各方面都不错,在大部分场景下是一种稳健的技术选择.加上近年来安卓的推动,目前也是最流行的一种语言. 现在Java的就业市场看起来还 ...

  4. 第十二章:synchronized与锁升级

    相关面试题 锁优化背景 Synchronized 锁性能变化 jdk5 以前 复习:为什么任意一个对象都能成为锁? jdk6 之后 synchronized的种类以及锁升级流程 锁升级流程 无锁 偏向 ...

  5. 虾皮面试真题:虾皮后端15连问!

    大家好,我是不才陈某~ 最近有位读者去虾皮面试啦,分享一下面试的真题~ 排序链表 对称与非对称加密算法的区别 TCP如何保证可靠性 聊聊五种IO模型 hystrix 工作原理 延时场景处理 https ...

  6. Java内存模型基础学习(二)——絮叨一下可见性

    文章目录 前言 可见性 什么是可见性 JMM的抽象 happens-before原则 什么是happens-before happens-before的规则 实例解析 volatile关键字 vola ...

  7. 多线程与高并发整理总结【超全面】

    我们先说一下为什么要讲多线程和高并发? 原因是,你想拿到一个更高的薪水,在面试的时候呈现出了两个方向的现象: 第一个上天 项目经验 高并发.缓存.大流量.大数据量的架构设计 第二个入地 各种基础算法, ...

  8. 密码锁 java接口_从synchronized和lock区别入手聊聊java锁机制

    写这篇文章之前,我去百度了一下啥叫锁,百度百科上写道:置于可启闭的器物上,以钥匙或暗码开启.确实我们一般理解的锁就是门锁,密码锁,但是在计算机科学中,锁又是啥,说实话,这个问题我也思考了很久,也没法很 ...

  9. synchronized底层原理_你用过synchronized吗?它的底层原理是什么?Java经典面试题来了...

    并发编程已经成为程序员必备技能 作为Java程序员,不懂得并发编程显然已经不能满足市场需求了,尤其是在面试过程中将处于被动地位,也有可能面试将就此终结. 那么作为Java开发者的你,日常虽然可以基于J ...

最新文章

  1. Android 录音功能直接拿去用
  2. js禁止用户右键等操作
  3. wdatepicker设置初始时间_滑动条的滑块的初始位置应该放在哪儿?
  4. ASP.NET程序中常用代码汇总(一)
  5. 【IOS 开发】Objective - C 语法 之 流程控制
  6. Apache Log4j2 RCE 命令执行漏洞预警及修复方案
  7. 为什么越来越多的程序员开始学机器学习?揭秘一个重要原因
  8. ios手机 php无法上传文件,【已解决】uni.uploadFile 苹果ios图片上传不成功
  9. 线性表之顺序表与单链表的区别及优缺点
  10. POJ 2185 Milking Grid (KMP,GCD)
  11. 编程修养 阅读笔记三
  12. DX12之手撸GPU Driven Pipeline
  13. 在word中怎么实现奇数页页眉用本章标题,偶数页用论文标题?
  14. 黄一老师:关于个人征信这几点你都未必知道!
  15. 一张图学《计算机组成原理(硬件篇)》 思维导图 计算机组成
  16. python 3.x语句print_Python 3.x语句print(1,2,3,sep=’.’)
  17. Luvwgyx的娱乐场-题解
  18. 阻容感基础10:电感器分类(2)-功率电感器
  19. 测试人员想做游戏测试,你一定要知道这几点!
  20. 在php中将Unicode字符转成中文

热门文章

  1. mysql表格的代码_mySQL表格内容用代码添加
  2. php 打开报错,php模式下 运行start.php 报错
  3. group by是否会用到索引_平时工作中经常用到的SQL,这些你都知道吗?
  4. 数据备份 另一服务器_狡兔三窟-数据备份
  5. shell命令卸载mysql_centos8中的MySQL卸载和安装
  6. 外链对网站SEO优化起什么作用?
  7. 网站权重增长缓慢,优化技巧是关键!
  8. 温度单闭环实验计算机控制,过程控制系统实践指导简介,目录书摘
  9. linux密码修改时间,linux 查看、修改用户及密码过期时间(示例代码)
  10. python批量ping50台服务器_Python小技巧—批量ping的方法