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

八股文实战之JUC:静态方法的锁和普通方法的锁

1、对于staic同步方法锁住的是class类模板(Class对象)  对象是线程(调用者)  调用者只有获取资源的锁才能调用
2、普通同步方法 锁住的资源是class对象   对象是线程(调用者)

即:

  • 静态同步方法

    • 锁住的是类的 Class 对象。
    • 这意味着同一个类的所有静态同步方法之间是互斥的,不论是哪个实例调用这些方法。
  • 普通同步方法

    • 锁住的是调用该方法的实例对象。
    • 不同的实例可以并行执行它们的普通同步方法,因为它们各自锁住的是自己的对象。

1、锁住的东西不同可以视作不同的锁 

2、进程只有获取锁 才能访问锁对应的方法等资源

3、如果锁不同 就不存在锁竞争

package com.example.mp.juc.lock8;

import java.util.concurrent.TimeUnit;

/**
 * @author Mr.Lan
 * @version 1.0
 * @ClassName Test1$
 * @description
 * @date 2025/2/22 20:46
 **/
public class Test1 {

    /*1、对于staic同步方法锁住的是class类模板(Class对象)  对象是线程(调用者)  调用者只有获取资源的锁才能调用
    * 2、普通同步方法 锁住的资源是class对象   对象是线程(调用者)  * */
    public static void main(String[] args) throws InterruptedException {
        Phone4 phone4 = new Phone4();
        Phone4 phone5 = new Phone4();
        new Thread(()->{phone4.sendSms();}).start();
        TimeUnit.SECONDS.sleep(1);
        new Thread(()->{phone4.call();}).start();
    }
}
class Phone4{

    Phone4(){
    }
    public static synchronized void sendSms(){
        try {
            TimeUnit.SECONDS.sleep(4);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        System.out.println("发短信");
    }

    public  synchronized void call(){
        System.out.println("打电话");
    }




}

http://www.dtcms.com/a/32240.html

相关文章:

  • 进程间通信中间件---ZeroMQ
  • Verilog define预处理命令
  • AI 大模型:点亮乡村振兴的新曙光
  • AWS S3深度解析:十大核心应用场景与高可用架构设计实践
  • sh脚本把服务器B,服务器C目录的文件下载到服务器A目录,添加开机自启动并且一小时执行一次脚本
  • 蓝桥与力扣刷题(蓝桥 交换瓶子)
  • ctfshow——phps源码泄露
  • Java APM如何Profiling:使用火焰图多维度分析应用性能瓶颈
  • Java Idea配置问题
  • 【多语言生态篇三】【DeepSeek×Go:高并发推理服务设计】
  • 2502C++,C++继承的多态性
  • 【误差理论与可靠性】第二章 可靠性的基本概念和参数体系
  • 25林业研究生复试面试问题汇总 林业专业知识问题很全! 林业复试全流程攻略 林业考研复试真题汇总
  • 【JavaWeb12】数据交换与异步请求:JSON与Ajax的绝妙搭配是否塑造了Web的交互革命?
  • 京东外卖骑手全部缴纳五险一金
  • 1.vue使用vite构建初始化项目
  • C/C++ 中 volatile 关键字详解
  • 用C++实现一个简单的算法:快速排序(QuickSort)
  • 本周行情——250222
  • 使用 DeepSeek 和 ECharts 实现大屏数据可视化
  • Flutter 启动优化
  • 如何对比软件需求做的是否合格?
  • 在 JavaScript 中接入 Facebook 事件
  • Apache Hop:开源版本的Kettle
  • 标准I/O与文件I/O
  • LeetCode51
  • SpringSecurity设置白名单
  • epoll_event的概念和使用案例
  • 如何保存爬虫获取商品评论的数据?
  • 【AI时代】基于AnythingLLM+ Ollama + DeepSeek 搭建本地知识库