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

Java面试篇基础部分-Synchronized关键字详解

  Synchronized关键字用于对Java对象、方法、代码块等提供线程安全操作。Synchronized属于独占式的悲观锁机制,同时也是可重入锁。我们在使用Synchronized关键字的时候,可以保证同一时刻只有一个线程对该对象进行访问;也就是说它在同一个JVM中是线程安全的。
在这里插入图片描述
  Java中的每个对象都有一个monitor对象,加锁就是再竞争monitor对象。代码块加锁是通过在代码块前后分别加上monitorenter和monitorexit指令实现。方法加锁则是通过一个标记位来进行判断。

Synchronized 的作用范围

  • synchronized 作用于成员变量和非静态方法的时候,锁住的是对象实例本身,也就是this对象。
  • synchronized 作用于静态方法的时候,锁住的是Class实例,因为静态方法属于Class而不属于对象。
  • synchronized 作用于一个代码块的时候,锁住的是所有代码块中配置的对象。

Synchronized 用法

public class SynchronizedDemo {public static void main(String[] args) {final SynchronizedDemo synchronizedDemo = new SynchronizedDemo();new Thread(new Runnable() {@Overridepublic void run() {synchronizedDemo.generalMethod1();}}).start();new Thread(new Runnable() {@Overridepublic void run() {synchronizedDemo.generalMethod2();}}).start();}// synchronized 关键字修饰普通的同步方法,锁住的是当前实例对象public synchronized void generalMethod1(){try {for (int i = 0; i < 3; i++) {System.out.println("generalMethod1 execute "+i+" time");
http://www.lryc.cn/news/444940.html

相关文章:

  • 数据结构之线性表——LeetCode:67. 二进制求和,27. 移除元素,26. 删除有序数组中的重复项
  • SQL_HAVING小例子
  • Avalonia第三方UI库Semi.Avalonia用法详解
  • 宠物智能化听诊器的健康管理!
  • MyBatis-Plus 实体类注解
  • 如何写一个自动化Linux脚本去进行等保测试--引言
  • 美团测开OC!
  • HyperWorks的实体几何创建与六面体网格剖分
  • 项目实战:Ingress搭建Nginx+WP论坛+MariaDB
  • UWA支持鸿蒙HarmonyOS NEXT
  • 【齐家网-注册/登录安全分析报告】
  • MyBatis 基本概念
  • 前端开发之装饰器模式
  • 【STL】pair 与 map:基础、操作与应用
  • 深度学习-图像处理篇4VGG网络
  • 初级css+初级选择器
  • gitlab 的CI/CD (二)
  • 【html】基础(一)
  • 【网站架构部署与优化】Nginx优化
  • gitlab修改访问端口
  • 分库分表-分页排序查询
  • 【openwrt-21.02】openwrt PPTP Passthrough 不生效问题解决方案
  • 【编程基础知识】Mysql的各个索引数据结构及其适用场景
  • 解决IDEA出现:java: 程序包javax.servlet不存在的问题
  • Comfyui控制人物骨骼,细节也能完美调整!
  • mysql学习教程,从入门到精通,SQL LEFT JOIN 语句(23)
  • VSCode远程切换Python虚拟环境
  • 【CSS in Depth 2 精译_038】6.2 CSS 定位技术之:绝对定位
  • 828 华为云征文|华为 Flexus 云服务器搭建 SamWaf 开源轻量级网站防火墙
  • 基于二自由度汽车模型的汽车质心侧偏角估计