Java并发-对象监视器

对于同步块的实现使用了monitorenter和monitorexit指令,而同步方法则是依靠方法修饰符上的ACC_SYNCHRONIZED来完成的。
无论采用哪种方式,其本质是对一个对象的监视器进行获取,而对这个获取过程是排他的,也就是说统一时刻是能有一个线程获得到由synchronized所保护对象的监视器。

任意线程对Object的访问,首先要先获得Object的监视器。如果获取失败了,线程进入同步队列,线程状态变为BLOCKED。当访问Object的线程(获得了所的线程)释放了锁,则该释放操作唤醒在同步队列中的线程,使其重新尝试对监视器的获取。

(0)

相关推荐

  • Java面试考点(一)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.java基础 1.1请你说明String 和StringBuffer的区别 1.2请你说明一下int 和 Inte ...

  • 思维导图整理Java并发基础知识

    话不多说,先上图. 1.基本概念 欲说线程,必先说进程. 进程 :进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位. 线程 :线程是进程的一个执行路径,一个进程中至少有一个线程 ...

  • 【JAVA并发第三篇】线程间通信

    线程间的通信 JVM在运行时会将自己管理的内存区域,划分为不同的数据区,称为运行时数据区.每个线程都有自己私有的内存空间,如下图示: Java线程按照自己虚拟机栈中的方法代码一步一步的执行下去,在这一 ...

  • 【JAVA并发第四篇】线程安全

    【JAVA并发第四篇】线程安全

  • Java并发编程之内置锁(synchronized)

    简介 synchronized在JDK5.0的早期版本中是重量级锁,效率很低,但从JDK6.0开始,JDK在关键字synchronized上做了大量的优化,如偏向锁.轻量级锁等,使它的效率有了很大的提 ...

  • Java并发编程之线程的创建

    简介 线程是基本的调度单位,它被包含在进程之中,是进程中的实际运作单位,它本身是不会独立存在.一个进程至少有一个线程,进程中的多个线程共享进程的资源. Java中创建线程的方式有多种如继承Thread ...

  • Java并发编程实战(5)- 线程生命周期

    在这篇文章中,我们来聊一下线程的生命周期. 目录 概述 操作系统中的线程生命周期 Java中的线程生命周期 Java线程状态转换 运行状态和阻塞状态之间的转换 运行状态和无时限等待状态的切换 运行状态 ...

  • 100道Java并发和多线程基础面试题大集合(含解答),这波面试稳了~

    # 前言 这篇文章主要是对多线程的问题进行总结的,因此罗列了100个多线程的问题. 这些多线程的问题来源于各大网站,可能有些问题网上有.可能有些问题对应的答案也有.也可能有些各位网友也都看过,但是本文 ...

  • Java并发多线程编程——Volatile原理与使用

    优质文章,第一时间送达 76套java从入门到精通实战课程分享 一.volitile的理解 Volatile称之为轻量级锁,被volatile修饰的变量,在线程之间是可见的. 可见即一个线程修改了这个 ...

  • Java并发编程实战(4)- 死锁

    概述 在上一篇文章中,我们讨论了如何使用一个互斥锁去保护多个资源,以银行账户转账为例,当时给出的解决方法是基于Class对象创建互斥锁. 这样虽然解决了同步的问题,但是能在现实中使用吗?答案是不可以, ...