Java线程提供了很多的线程通讯机制,最为基础就是synchronized。对于任何一个Java对象而言,都有一个相关的Monitor,当线程进入到synchronized 方法或synchronized块时。会进行如下的几个动作:
- 计算指向对象的指针
- 获取对象的Monitor,如果成功则执行第 3 步;否则执行第 6 步
- 执行synchronized 里面的代码(也即我们的code)
- 一旦synchronized里面代码执行完成,则释放Monitor,线程推出critical section
- JVM调度被Monitor阻塞的线程,转到第 2 步
- 线程进入BLOCKED状态,等待JVM调度
注意:synchronized的加锁和放锁,都是自动执行的。如果synchronized是一个对象的方法,则线程获取的就是对象的Monitor,如果
synchronized 是一个静态方法,则线程获取就是Class对象的Monitor(所谓类对象,是类在内存中的表现形式,任何一个Java类都由一个类对象来表达,他们位于Method Area中)
分享到:
相关推荐
Java线程:概念与原理 2 一、操作系统中线程和进程的概念 2 二、Java中的线程 3 三、Java中关于线程的名词解释 3 四、线程的状态转换和生命周期 4 Java线程:创建与启动 7 Java线程:线程名称的设定及获取 10 Java...
java多线程中synchronized关键字的用法 解压密码 www.jiangyea.com
Java 中多线程的同步依靠的是对象锁机制,synchronized关键字就是利用了封装对象锁来实现对共享资源的互斥访问。下面这篇文章主要介绍了java线程与synchronized关键字的相关资料,需要的朋友可以参考下。
一个多线程访问的同一个资源,java synchronized互斥锁的用法,android和此用法一致。
你还在用synchronized?线程安全相关知识深入剖析
Java中的synchronized:同步方法与线程安全
Java多线程synchronized关键字详解(六)共5页.pdf.zip
Java多线程(Synchronized+Volatile+JUC 并发工具原理+线程状态+CAS+线程池)
一、线程安全问题: 并发编程的原则:设计并发编程的目的是为了使程序获得更高的执行效率,但绝不能出现数据一致性(数据准确)问题,如果并发程序连基本的执行结果准确性都无法保证,那并发编程没有任何意义。 ...
Java线程(二):线程同步synchronized和volatile 详细讲解Java 同步的原理技术资料
Java线程及同步(synchronized)样例代码
在Java中,synchronized关键字是用来控制线程同步的,是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。Synchronized既可以对代码块使用,也可以加在整个方法上。 关键是,不要认为给方法或者...
主要介绍了Java 多线程synchronized关键字详解(六)的相关资料,需要的朋友可以参考下
java的线程同步机制synchronized关键字的理解_.docx
线程同步Synchronized,监视器monitor和锁lock的关系2---马克-to-win java视频
java线程深入讲解,可以了解java线程同步语安全,实现的方法和synchronized锁的使用与安全控制等等,谁用谁知道好用
Synchronized是Java中解决并发问题的一种常用的方法,也是简单的一种方法。Synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见(3)有效解决重排序问题。从语法...
本资源致力于向您介绍 Java 并发编程中的线程基础,涵盖了多线程编程的核心概念、线程的创建和管理,以及线程间通信的基本方法。通过深入学习,您将建立扎实的多线程编程基础,能够更好地理解和应用多线程编程。 多...
主要介绍了Java线程之线程同步synchronized和volatile详解,具有一定参考价值,需要的朋友可以了解下。