`

Lock和Synchronized的不同

    博客分类:
  • java
 
阅读更多
  在 Java 中线程的状态可以分为:新建(New),运行状态(Runnable)、阻塞状态(Blocked)、等待状态(Waiting)、结束状态(Terminated)。运行状态可以转为 阻塞状态或等待状态。
在接收完基本概念后,我们看看显示锁(Lock)和内部锁(synchronized)有什么不同。
  • Lock 支持更细粒度的同步控制
  • Lock是无阻塞锁,synchronized 是阻塞锁。当线程A持有锁S,如果线程B也期望获取锁S,如果是显示锁则线程B进入等待状态,如果是内部锁则线程B进入阻塞状态
  • Lock可以实现公平锁,synchronized 只能是非公平锁 公平是指JVM优先选择等待时间最长的线程持有锁,非公平是指随机选择
  • Lock 是代码级的,synchronized 是JVM级的


java 的内存模型,在java 中每个线程都有自己的工作内存,如寄存器,高速缓存等,线程在写入的时候首先写入的是自己的工作内存中,然后在刷到主内存中,读取也是先从主内存加载到工作内存中,然后线程是从工作内存中获取。
    volatile 只能保证每次读写数据的时候都是对主内存进行操作,但是并不能保证该资源的同步。
分享到:
评论

相关推荐

    java的lock和synchronized的区别.docx

    lock 和 synchronized 都是锁的意思,但是它们有不同的实现机制和应用场景。lock 提供了更加灵活和高效的锁机制,可以满足不同场景下的需求,而 synchronized 则是 Java 中的关键字,具有语言的内置性。

    lock锁,lock锁和synchronized的对比

    lock锁,lock锁和synchronized的对比 # Lock锁 JDK5.0后Java提供了一种更加强大的线程同步机制。一种显式定义同步锁对象来实现锁,提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程开始访问...

    【Java面试题】lock与synchronized区别

    【Java面试题】lock与synchronized区别

    Lock接口与synchronized关键字

    ### Lock接口与synchronized关键字详解 #### 一、概述 在Java并发编程中,Lock接口与synchronized关键字都是实现同步的重要工具。它们虽然都用于控制多线程对共享资源的访问,但在使用方式、功能特性及灵活性方面...

    Synchronized 和 Lock 的区别和使用场景

    本文将深入探讨两种主要的锁机制:`synchronized`关键字和`Lock`接口,以及它们各自的特点、应用场景和使用方式。 一、Synchronized `synchronized`是Java中的一个内置关键字,用于提供线程安全。它的主要作用是...

    简单了解synchronized和lock的区别

    了解synchronized和lock的区别 synchronized是Java语言...在Java中,synchronized和lock都是用于实现线程同步的机制,但它们有不同的实现机制和性能特点。在选择使用哪种机制时,需要考虑到具体的应用场景和性能要求。

    Java编程synchronized与lock的区别【推荐】

    synchronized 和 Lock 是 Java 编程中两种常用的同步机制,用于实现线程安全的访问。两者都可以实现同步访问,但是它们有着不同的设计理念和使用场景。 synchronized 的缺陷 synchronized 是 Java 语言内置的...

    线程同步Synchronized,监视器monitor和锁lock的关系2---马克-to-win java视频

    线程同步Synchronized,监视器monitor和锁lock的关系2---马克-to-win java视频

    详谈Lock与synchronized 的区别

    Java并发编程中,Lock接口和synchronized关键字是两种常见的互斥锁定机制,它们都用于确保多线程环境下的数据一致性。然而,它们在特性和使用上存在显著的区别。 首先,Lock是一个接口,它提供了比synchronized更细...

    synchronized和LOCK的实现原理深入JVM锁机制比较好.docx

    了解 JVM 锁机制中的 synchronized 和 Lock 实现原理 在 Java 中,锁机制是数据同步的关键,存在两种锁机制:synchronized 和 Lock。了解这两种锁机制的实现原理对于理解 Java 并发编程非常重要。 synchronized 锁...

    Lock、Synchoronized和ReentrantLock的使用

    Lock、Synchronized 和 ReentrantLock 的使用 Lock、Synchronized 和 ReentrantLock 是 Java 中三种常用的同步机制,每种机制都有其特点和使用场景。下面对这三种机制进行详细的分析和比较。 一、Synchronized ...

    java中synchronized用法

    在 Java 中,synchronized 关键字可以作用于 instance 变量、object reference(对象引用)、static 函数和 class literals(类名称字面常量)身上。 Synchronized 关键字的作用是取得对象的锁,而不是把一段代码或...

    使用synchronized实现一个Lock代码详解

    在了解Lock和synchronized的区别之前,我们首先需要了解它们的基本概念。Lock是一个接口,它提供了一种机制来保护critical section,使得多个线程在访问共享资源时不会发生冲突。synchronized是Java语言提供的一种...

    Synchronized与Lock

    "Synchronized与Lock"这个主题探讨了两种主要的同步机制:synchronized关键字和Lock接口(包括其实现类如ReentrantLock)。这两种机制都用于实现线程间的互斥访问,但它们在功能、灵活性和性能上有所差异。 首先,...

    深入Synchronized和java.util.concurrent.locks.Lock的区别详解

    总的来说,Synchronized和Lock都是Java中解决并发问题的重要工具,它们各有优势,适用于不同的场景。在实际开发中,根据应用的需求和性能考虑,选择合适的同步机制至关重要。理解它们的差异和使用方式,有助于编写出...

    synchronized的几种示例

    本文将深入探讨`synchronized`的几种使用示例,包括方法加锁、代码块加锁(针对`this`和对象)以及静态方法加锁。 1. **方法加锁** 当在实例方法前使用`synchronized`关键字时,它会锁定当前对象的监视器,只有...

    synchronized并发讲解源码.zip

    除了锁住对象或类,`synchronized`还可以与`wait()`、`notify()`和`notifyAll()`方法结合使用,实现复杂的线程通信和同步。这些方法都是在`Object`类中定义的,只有在持有对象锁的情况下才能调用,否则会抛出`...

    关于synchronized、Lock的深入理解

    1. **使用方式**:`synchronized`是隐式同步,无需手动释放,而`Lock`是显式同步,需手动调用`lock()`和`unlock()`。 2. **控制能力**:`Lock`提供了更多控制选项,如可中断、可选择公平性、锁分离等。 3. **异常...

    synchronized 的理解

    在深入探讨`synchronized`的关键知识点之前,我们先来明确`synchronized`在Java中的核心作用:它是一种用于实现线程同步的机制,确保了共享资源在多线程环境下的正确访问和修改,避免了数据不一致性和竞态条件等问题...

Global site tag (gtag.js) - Google Analytics