Java锁机制以及原理

本文详细探讨了Java中的同步机制,包括synchronized关键字、volatile变量、显示锁和原子变量。深入分析了线程安全的概念,指出无状态和不可变对象的线程安全性。还介绍了锁的内置实现,如监视器锁和volatile的应用,以及避免死锁的策略。此外,文章讨论了Java并发机制的底层实现,特别是volatile和synchronized的工作原理,以及线程安全的集合类如CopyOnWriteArrayList。
摘要由CSDN通过智能技术生成

    1.同步方式

             Java中主要同步机制是关键字 synchronized (独占锁),volatile类型的变量、显示锁(Lock)、原子变量(volatile与CAS方式);

             synchronized 加锁的含义不仅仅局限于互斥行为,还包括内存可见性,为了确保所有线程都能看到共享变量的最新值,所有执行读操作或者写操作的线程都必须在同一个锁上同步。同步代码块与同步方法是一样的,都是当前对象锁。

    2. 线程安全

             当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为;

            无状态对象一定是线程安全的;

            不可变对象一定是线程安全的(final),final域能确保初始化过程的安全性,从而可以不受限制地访问不可变对象,并在共享这些对象时无须同步;

            要保持状态的一致性,就需要在单个原子操作中更新所有相关的状态变量;       

    3.锁

           内置锁(监视器锁Monitor Lock) synchrnized 同步代码块;线程在进入同步代码块之前会自动获得锁,并且在退出同步代码块时自动释放锁。他是一种互斥锁,只有一个线

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值