当前位置: 首页 > news >正文

synchronized(this) 与synchronized(class) 有啥区别

前言

  • synchronized(this) 与 synchronized(class) 相同处:均对代码加锁,实现互斥性。
  • synchronized(this) 与 synchronized(class) 区别:作用域不同。

synchronized (this)

synchronized(this)使用的是对象锁。this为关键词,表示当前对象。
同样使用对象锁的写法有synchronized(obj)

在 Java 中,每个对象都会有一个 monitor 对象,这个对象其实就是 Java 对象的锁,通常会被称为“内置锁”或“对象锁”。
对象是类的实例,一个类对应N多对象。使用对象锁时,对象相同时,互斥;对象不同时,不互斥。

public void xxx() {synchronized (this) {// 加锁区域...}
}

synchronized (class)

synchronized(this)使用的是类锁。

public void xxx() {synchronized (xxxxx.class) {// 加锁区域...}
}

在 Java 中,一个类只有一个锁,可以称为“类锁”。使用类锁时,无条件的互斥。

synchronized 修饰方法

synchronized 修饰方法时,使用的是对象锁。

public synchronized  void xxx() {// 加锁区域...
}

synchronized 修饰静态方法

synchronized 修饰静态方法,使用的是类锁。

public synchronized static void xxxx() {// 加锁区域...
}

参考

https://www.cnblogs.com/huansky/p/8869888.html

http://www.lryc.cn/news/44729.html

相关文章:

  • BOSS直拒、失联招聘,消失的“金三银四”,失业的测试人出路在哪里?
  • 华为OD机试【密室逃生游戏】
  • 【Python学习笔记(六)】json解析模块的使用
  • 《Spring系列》第3章 基于注解管理Bean
  • 【Redis】十大数据类型(下篇)
  • 【第十一届“泰迪杯”数据挖掘挑战赛】B题产品订单的数据分析与需求预测“解题思路“”以及“代码分享”
  • Python入门到高级【第一章】
  • 【泰凌微TLSR8258 zigbee】OTA升级操作方法
  • 网络基础设施监控
  • OPNET Modeler 例程——创建一个包交换网络
  • JSON 基础结构
  • 雷达基础知识
  • 【二阶锥规划】考虑气电联合需求响应的气电综合能源配网系统协调优化运行【IEEE33节点】(Matlab代码实现)
  • qt 编译器 调试器
  • 低代码平台助力AIGC:让人工智能技术更加普及和高效
  • Qt中Model/View结构
  • 中纬ZOOM35全站仪参数和使用说明书
  • 【Note5】网络,并发/IO,内存,linux/vi命令,正则,Hash,iNode,文件查找与读取,linux启动/构建
  • 华为MRS_HADOOP集群 beeline使用操作
  • PCB模块化设计10——PCI-E高速PCB布局布线设计规范
  • Java简介
  • python框架有哪些,常用的python框架代码
  • jsp设计简单的购物车应用案例
  • VueX是什么?好处?何时使用?
  • 第2章 封装组件初级篇(上)
  • uniapp image标签图片跑偏终极解决办法
  • SpringMVC的响应处理
  • 静态词向量预训练模型
  • 永久免费CRM怎么选?有什么好用的功能?
  • leetcode重点题目分类别记录(二)基本算法:二分,位图,回溯,动态规划,图论基础,拓扑排序