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

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() {
   
            @Override
            public void run() {
   
                synchronizedDemo.generalMethod1();
            }
        }).start();

        new Thread(new Runnable() {
   
            @Override
            public 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.kler.cn/news/315710.html

相关文章:

  • python爬虫中json和xml字符串的xPath和jsonpath过滤语法区别对比
  • 零工市场小程序:推动零工市场建设
  • 【Kubernetes】常见面试题汇总(三十)
  • 【二等奖论文】2024年华为杯研赛D题成品论文(后续会更新)
  • rust GTK4 窗口创建与 wayland Subsurface (vulkan 渲染窗口初始化 (Linux) 上篇)
  • Docker实践——天池篇
  • 极度精简 Winows11 系统镜像!Tiny11 2311下载 - 支持苹果 M 芯片 Mac 安装 (ARM 精简版)!
  • get_property --Cmakelist之中
  • 关闭小广告【JavaScript】
  • 【线程】线程的同步
  • PHP转Go很丝滑开发框架设计思路-把php优秀设计借鉴到Go框架设计里面-保留php开发习惯又能提供高软件性能
  • OpenCV特征检测(8)检测图像中圆形的函数HoughCircles()的使用
  • 利用JAVA写一张纸折叠珠穆拉玛峰高度
  • 算法打卡:第十一章 图论part04
  • 情指行一体化平台建设方案和必要性-———未来之窗行业应用跨平台架构
  • 0基础学习PyTorch——最小Demo
  • AI教你学Python 第17天 :小项目联系人管理系统
  • 小程序-模板与配置
  • 乱弹篇(53)丹桂未飘香
  • Excel常用函数大全
  • DAPP智能合约系统开发
  • 【计算机网络 - 基础问题】每日 3 题(十八)
  • SecureCRT下载
  • 如何在 MySQL Workbench 中修改表数据并保存??
  • 记一次Meilisearch轻量级搜索引擎使用
  • 蓝桥杯1.小蓝的漆房
  • 网络安全等保培训 ppt
  • 循环单链表来表示队列
  • Qt Debugging帮助文档
  • Packet Tracer - 配置编号的标准 IPv4 ACL(两篇)