`

java线程:synchronized

 
阅读更多

Java线程提供了很多的线程通讯机制,最为基础就是synchronized。对于任何一个Java对象而言,都有一个相关的Monitor,当线程进入到synchronized 方法或synchronized块时。会进行如下的几个动作:

 

  1. 计算指向对象的指针
  2. 获取对象的Monitor,如果成功则执行第 3 步;否则执行第 6 步
  3. 执行synchronized 里面的代码(也即我们的code)
  4. 一旦synchronized里面代码执行完成,则释放Monitor,线程推出critical section
  5. JVM调度被Monitor阻塞的线程,转到第 2 步
  6. 线程进入BLOCKED状态,等待JVM调度

注意:synchronized的加锁和放锁,都是自动执行的。如果synchronized是一个对象的方法,则线程获取的就是对象的Monitor,如果 synchronized 是一个静态方法,则线程获取就是Class对象的Monitor(所谓类对象,是类在内存中的表现形式,任何一个Java类都由一个类对象来表达,他们位于Method Area中)

分享到:
评论

相关推荐

    java线程:两种传统的实现方式.zip

    本文将深入探讨两种传统的Java线程实现方式,并通过一个具体的例子来阐述如何创建和管理这些线程。 首先,我们来看第一种线程实现方式:继承`Thread`类。当你创建一个新的类继承自`java.lang.Thread`,你可以重写它...

    Java线程:volatile关键字

    Java 线程 volatile 关键字详解 Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。volatile 变量的同步性较差,但它有时更简单并且开销更低。volatile 变量可以被看作是一种 “程度较轻的 ...

    Java多线程编程经验

    #### 一、Java线程:概念与原理 现代操作系统都是多任务操作系统,其中多线程是一种重要的实现多任务的方式。线程是进程内的一个执行单位,一个进程可以包含多个线程。例如,在Java应用程序中(如`java.exe`),...

    Java线程:线程状态的转换.pdf

    Java线程的状态主要包括以下五种: 1. 新状态(New):当通过`new Thread()`创建了一个线程对象,但还未调用`start()`方法时,线程处于新状态。此时,线程尚未启动,不具备执行的能力。 2. 可运行状态(Runnable)...

    Java多线程编程总结

    #### 一、Java线程:概念与原理 1. **操作系统中线程和进程的概念** - 当前的操作系统通常为多任务操作系统,多线程是实现多任务的一种手段。 - **进程**:指内存中运行的应用程序,每个进程拥有独立的内存空间。...

    java 多线程synchronized互斥锁demo

    标题中的"java 多线程synchronized互斥锁demo"指的是一个示例,展示了如何在多线程环境下使用`synchronized`关键字创建互斥锁,确保同一时间只有一个线程可以访问特定的代码块或方法。 描述中的"一个多线程访问的同...

    Java并发编程:Synchronized关键字深度解析

    本文深入探讨了Java中用于解决并发编程中线程安全问题的synchronized关键字。文章首先讨论了多线程编程中临界资源的概念,包括对象、变量、文件等,以及同步机制的必要性。重点解析了synchronized的工作原理,包括其...

    Java 线程开发讲座

    ### Java线程开发讲座知识点概览 #### 一、Java线程:概念与原理 - **线程定义**:在Java中,线程是程序执行流的最小单元,一个标准的Java应用程序至少有一个线程,即主程序入口的`main()`方法。 - **线程优势**:...

    深入讲解java线程与synchronized关键字

    【深入讲解Java线程与synchronized关键字】 Java中的多线程同步是通过对象锁机制来实现的,synchronized关键字正是这一机制的关键。它确保了在任何时刻,只有一个线程能够访问特定的共享资源,从而避免数据不一致的...

    java多线程中synchronized关键字的用法

    java多线程中synchronized关键字的用法 解压密码 www.jiangyea.com

    java多线程编程总结

    #### 一、Java线程:概念与原理 - **操作系统中线程和进程的概念** 当前的操作系统通常都是多任务操作系统,多线程是一种实现多任务的方式之一。在操作系统层面,进程指的是内存中运行的应用程序,每个进程拥有...

    java锁机制Synchronizedjava锁机制Synchronized

    Java 锁机制 Synchronized 是 Java 语言中的一种同步机制,用于解决多线程并发访问共享资源时可能出现的一些问题。 Java 锁机制 Synchronized 的概念 在 Java 中,每个对象都可以被看作是一个大房子,其中有多个...

    Java_多线程编程线程:大总结

    - **Java线程的分类**:Java线程主要分为用户线程和守护线程。用户线程的结束会直接影响JVM的生命周期,而守护线程通常由系统或库管理,如垃圾回收线程。 #### 三、Java线程的创建与启动 Java提供了两种主要的方式...

    Java多线程(Synchronized+Volatile+JUC 并发工具原理+线程状态+CAS+线程池)

    Java 多线程(Synchronized+Volatile+JUC 并发工具原理+线程状态+CAS+线程池) Java 多线程是 Java 语言中的一种并发编程机制,允许程序同时执行多个线程,以提高程序的执行效率和响应速度。 Java 多线程机制提供了...

    JAVA多线程

    #### Java线程:概念与原理 在现代操作系统中,多线程作为实现多任务处理的重要方式之一,允许在单个应用程序中并发执行多个任务。**线程**与**进程**是操作系统管理资源和执行程序的基本单位。进程是资源分配的...

    Java多线程机制(讲述java里面与多线程有关的函数)

    Java提供了synchronized关键字来实现方法或代码块的同步,防止多个线程同时访问同一块代码。 9.7 在同步方法中使用wait(), notify和notifyAll(): 这些方法用于线程间通信。wait()使当前线程进入等待状态,直到收到...

    JAVA多线程总结

    **一、Java线程:概念与原理** 1. **线程与进程**: - **进程**:是操作系统资源分配的基本单位,每个进程都有独立的内存空间。 - **线程**:是进程中的一个执行流,线程间共享进程的内存空间。在Java中,每个...

    java的线程同步机制synchronized关键字的理解_.docx

    Java 线程同步机制中 synchronized 关键字的理解 Java 的线程同步机制是为了解决多个线程共享同一片存储空间所带来的访问冲突问题。其中,synchronized 关键字是 Java 语言中解决这种冲突的重要机制。 ...

    java里面synchronized用法.doc

    Java 中的 synchronized 关键字是用于解决多线程并发问题的重要工具之一。它可以被用于方法、代码块和变量上,以实现对共享资源的互斥访问控制。本文将对 Java 中的 synchronized 用法进行详细的解释和分析。 一、...

Global site tag (gtag.js) - Google Analytics