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

如何做本地网站中国建设银行网站主要功能

如何做本地网站,中国建设银行网站主要功能,wordpress 后台添加文章 没编辑功能,福清手机网站建设hello啊,各位观众姥爷们!!!本baby今天又来报道了!哈哈哈哈哈嗝🐶 面试官:详细说说synchronized synchronized 是 Java 中实现线程同步的核心关键字,用于解决多线程环境下的资源竞争…

hello啊,各位观众姥爷们!!!本baby今天又来报道了!哈哈哈哈哈嗝🐶

面试官:详细说说synchronized

synchronized 是 Java 中实现线程同步的核心关键字,用于解决多线程环境下的资源竞争问题,确保线程安全。


1. 基本作用

synchronized 通过 互斥锁(Mutex Lock) 机制,保证同一时刻只有一个线程能访问被保护的代码块或方法,避免多个线程同时操作共享资源导致的数据不一致问题。


2. 使用方式

synchronized 可以修饰以下三种对象:

(1) 实例方法
  • 锁对象:当前实例对象(this)。
  • 作用:同一实例的多个线程会互斥访问该方法。
    public synchronized void method() {// 同步代码
    }
    
(2) 静态方法
  • 锁对象:类的 Class 对象(MyClass.class)。
  • 作用:所有实例的线程都会互斥访问该静态方法。
    public static synchronized void staticMethod() {// 同步代码
    }
    
(3) 代码块
  • 锁对象:显式指定任意对象(通常是共享资源)。
  • 作用:更细粒度地控制同步范围。
    public void blockMethod() {synchronized (lockObject) {  // lockObject 可以是任意对象// 同步代码}
    }
    

3. 核心特性

(1) 可重入性(Reentrant)
  • 同一个线程可以重复获取同一个锁。
  • 示例:线程获取锁后,在同步代码中调用另一个同步方法(使用同一锁)不会阻塞。
(2) 锁的释放
  • 线程执行完同步代码块或方法后,自动释放锁
  • 若线程发生异常退出同步代码块,锁也会自动释放。
(3) 锁的竞争
  • 未获取锁的线程会进入 阻塞状态(BLOCKED),直到锁被释放。

4. 底层原理

synchronized 的底层实现依赖于 JVM 的 Monitor(监视器锁) 机制,具体通过以下步骤实现:

(1) Monitor 对象
  • 每个 Java 对象都与一个 Monitor 关联,Monitor 包含以下关键字段:
    • _owner:记录当前持有锁的线程。
    • _EntryList:等待获取锁的阻塞线程队列。
    • _WaitSet:调用 wait() 后进入等待状态的线程队列。
(2) 字节码层面
  • 同步代码块通过 monitorentermonitorexit 指令实现:
    public void method() {synchronized (obj) {// 代码}
    }
    
    对应的字节码:
    monitorenter   // 尝试获取锁
    ...             // 同步代码
    monitorexit    // 释放锁
    
(3) 锁升级优化(JDK 1.6+)

为了提高性能,JVM 对 synchronized 进行了优化,引入了 锁升级机制

  1. 无锁(No Lock):初始状态。
  2. 偏向锁(Biased Lock):锁偏向第一个获取它的线程,避免后续 CAS 操作。
  3. 轻量级锁(Lightweight Lock):通过 CAS 自旋尝试获取锁,避免线程阻塞。
  4. 重量级锁(Heavyweight Lock):竞争激烈时,升级为操作系统级别的互斥锁(Mutex)。

5. 典型应用场景

(1) 线程安全的单例模式
public class Singleton {private static volatile Singleton instance;public static Singleton getInstance() {if (instance == null) {synchronized (Singleton.class) {if (instance == null) {instance = new Singleton();}}}return instance;}
}
(2) 保护共享资源
public class Counter {private int count = 0;public synchronized void increment() {count++;}
}

6. 与 ReentrantLock 的对比

特性synchronizedReentrantLock
锁类型JVM 内置锁JDK 实现的显式锁
灵活性不支持中断、超时、公平锁支持中断、超时、公平锁
代码控制自动释放锁需手动 lock()unlock()
性能JDK 1.6 后优化,性能接近显式锁高竞争场景下性能更好
适用场景简单同步需求复杂同步逻辑(如条件变量 Condition

7. 注意事项

  1. 锁对象的选择

    • 避免使用字符串常量或基本类型(如 Integer)作为锁对象。
    • 推荐使用私有、不可变的对象:private final Object lock = new Object();
  2. 减少同步范围

    • 尽量缩小同步代码块,避免在同步块内执行耗时操作(如 I/O)。
  3. 死锁风险

    • 避免嵌套锁或多锁顺序不一致导致的死锁。
    • 示例:线程 A 先锁 X 再锁 Y,线程 B 先锁 Y 再锁 X → 可能死锁。
  4. 锁粗化与锁消除

    • 锁粗化:JVM 将多个连续锁合并为一个锁,减少开销。
    • 锁消除:JVM 检测到不可能存在共享竞争时,自动去除锁(如局部变量)。

8. 常见问题

Q1:synchronizedvolatile 的区别?
  • synchronized:保证原子性、可见性和有序性。
  • volatile:仅保证可见性和有序性,不保证原子性(如 i++ 仍需同步)。
Q2:静态方法和实例方法的锁是否冲突?
  • 不冲突!静态方法锁的是类对象(Class),实例方法锁的是当前实例(this)。
Q3:如何排查死锁?
  • 使用 jstack 或可视化工具(如 JConsole)查看线程状态和锁持有情况。

总结

synchronized 是 Java 线程同步的基石,通过 Monitor 机制实现互斥访问。虽然在高并发场景下可能成为性能瓶颈,但其简洁性和 JVM 的优化(如锁升级)使其在大多数场景下足够高效。对于更复杂的同步需求,可结合 ReentrantLock 或并发工具类(如 SemaphoreCountDownLatch)使用。

在这里插入图片描述


文章转载自:

http://ouSGHvUj.ftLgy.cn
http://UHpROfMV.ftLgy.cn
http://Qz0WRFla.ftLgy.cn
http://mn2FvfPJ.ftLgy.cn
http://00OjzuTP.ftLgy.cn
http://Grhrd4Fv.ftLgy.cn
http://ROaSnkg2.ftLgy.cn
http://vwt8nhf5.ftLgy.cn
http://fJaDf2Fg.ftLgy.cn
http://yLixBv0t.ftLgy.cn
http://8zBsGyH3.ftLgy.cn
http://i7Vtb1st.ftLgy.cn
http://sD2ehK69.ftLgy.cn
http://3WmmAM2G.ftLgy.cn
http://P8PGxGoX.ftLgy.cn
http://ISG8QUyf.ftLgy.cn
http://GTj9mcPw.ftLgy.cn
http://f9QLAjg5.ftLgy.cn
http://0rpbTwyp.ftLgy.cn
http://YItwRU7h.ftLgy.cn
http://mHxza44s.ftLgy.cn
http://vznkp0Lg.ftLgy.cn
http://R9ZkVJpd.ftLgy.cn
http://bxHskcnv.ftLgy.cn
http://cUYSFlpm.ftLgy.cn
http://3XOKzZOz.ftLgy.cn
http://QXP026Mz.ftLgy.cn
http://5kY2AkZC.ftLgy.cn
http://5WX1Ofl7.ftLgy.cn
http://HMId9V9q.ftLgy.cn
http://www.dtcms.com/wzjs/740497.html

相关文章:

  • 腾讯云服务器用什么做网站在线网站制作系统源码
  • 江苏建设厅官方网站人工费wordpress 5.1.1主题
  • 专业手机网站设计网站建设图片大全
  • 做网站移动端建多大尺寸如何搭建局域网服务器
  • 如何自建网站删除wordpress logo
  • 出版社网站建设商城小程序开发多少钱
  • 网站的关于我们怎么做摄影网站cnu视觉联盟
  • 西安专业的网站优化浙江省住房和城乡建设厅成绩查询
  • 网站统计天津seo管理平台
  • 新手学做网站学哪些知识wordpress强大播放器
  • 孝仙洪高速公路建设指挥部网站网站管理助手 伪静态
  • 企业电子商务网站的建设方式深圳网站建设 百度一下
  • 汉字域名的网站普洱做网站的报价
  • 做网站的资源有哪些上海天华建筑设计有限公司合肥分公司
  • 门户网站综合型门户天津网站制作
  • 做网站运营有趣吗济南建设官方网站
  • 建设网站 费用吗做网站导航栏目怎么做
  • 江津哪个网站可以做顺风车flash 网站模板
  • 企业网站的首页设计北京seo优化哪家公司好
  • app 游戏网站建设短视频营销现状
  • 合肥简川科技网站建设公司 概况微信公众号会员卡管理系统
  • php网站建设设计制作方案中国住建部
  • 根据百度地图做网站wordpress 问卷插件
  • 江门有什么网站推广wordpress 社交
  • 重庆建设教育网站骨科医院网站优化服务商
  • 可以做翻译兼职的网站有哪些wordpress vps
  • wordpress子目录站点有没有教做网站的app
  • 做羞羞事的网站有哪些电子商务网站开发与设计报告
  • 滨江道网站建设域名备案审核需要多久
  • 个人网站建设方案书实例秦皇岛市住房和城乡建设局网