`
xiewenyu
  • 浏览: 4483 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

synchronized 方法互斥规则

    博客分类:
  • java
 
阅读更多
1:当进入对象a的非静态的synchronized方法时,不可以进入该对象的其他非静态的synchronized方法;
2:当进入对象a的静态的synchronized方法时,任何对象都不能进入该类的所有静态synchronized方法,其他该类的对象可以进入非静态的synchronized方法;

可以用synchronized(this)和synchronized(class),更容易理解。
分享到:
评论

相关推荐

    操作系统进程同步和互斥的实验报告

    在Java代码实现中,使用了`SyncStack`类作为同步栈,包含`push`和`pop`方法,这两个方法被声明为`synchronized`以实现互斥访问。`WoTou`类代表生产者产生的产品。在`push`方法中,当缓冲区满时,生产者调用`wait()`...

    java synchronized详解

    在Java中,同步可以应用于方法或代码块,为线程提供互斥访问,防止数据竞争问题。 1. **什么是`synchronized`?** `synchronized`是Java中的一个关键字,用于实现线程同步,它主要解决多线程环境下共享资源的并发...

    Java synchronized关键_动力节点Java学院整理

    1. **互斥性**:当一个线程正在执行某个对象的`synchronized`方法或代码块时,其他线程无法同时访问该对象的其他`synchronized`方法或代码块。这意味着在同一时间,只能有一个线程持有对象的锁。 2. **可重入性**:...

    操作系统进程同步和互斥的实验报告.doc

    在Java中,可以使用synchronized关键字来实现同步对象。同步对象可以用于解决进程同步和互斥问题。例如,在生产者-消费者问题中,可以使用同步栈来实现缓冲区的读写操作。 知识点6:线程同步 线程同步是指多个线程...

    Java并发编程:Synchronized及其实现原理

    当Synchronized用于修饰非静态方法时,它会为每个对象实例创建一个锁,也称为实例锁或对象锁。当线程A调用该对象的同步方法时,会获取到该对象的锁,其他线程如线程B试图调用同一对象的同步方法时,会被阻塞,直到...

    线程互斥和同步代码样本滴水三期信号量布置的作业

    在C++中,可以使用`std::mutex`来实现互斥锁,而在Java中,可以使用`synchronized`关键字或者`java.util.concurrent.Lock`接口的实现,如`ReentrantLock`。 同步是指控制多个线程按照一定的顺序或条件执行,以避免...

    27道顶尖的Java多线程、锁、内存模型面试题!.pdf

    一个对象的所有synchronized方法共享同一把锁,意味着它们会互斥执行,而非synchronized方法不受影响。 3. **可重入性**:可重入性是指一个线程可以重新获取已经持有的锁,这是为了避免死锁而设计的特性。例如,一...

    多线程面试题.docx

    - 一个线程访问对象的 synchronized 方法或代码块时,其他线程对该对象的 synchronized 方法或代码块将被阻塞。 - 一个线程访问某对象的 synchronized 方法,其他线程仍可以访问该对象的非 synchronized 代码块。 ...

    Java重写重载线程

    关于方法重写的规则,需要注意以下几点: 1. 子类不能覆盖父类中声明为`final`或`static`的方法。 2. 子类覆盖父类的同名方法时,子类中方法的声明也必须和父类中被覆盖的方法的声明一样,除了访问修饰符。 3. 子类...

    并发面试专题.pdf

    - 若Synchronized修饰的方法未明确指定锁对象,则依据以下规则确定: - 非静态方法:锁对象为所属对象自身。 - 静态方法:锁对象为所属类的Class对象。 - **可重入性**: - 可重入性指的是一个线程可以在已拥有...

    新手入门:写Java程序的三十个基本规则

    13. **线程编程**:了解Thread类和Runnable接口,掌握线程同步和互斥机制,如synchronized关键字和wait/notify机制。 14. **理解并发编程**:学习并发工具类如Semaphore、CountDownLatch,以及并发集合如...

    java内存模型.zip

    7. synchronized 的用法:synchronized 可以修饰方法或者代码块,形成互斥锁,保证同一时刻只有一个线程能够执行。对于方法,同步的是对象;对于代码块,同步的是指定的对象引用。 8. volatile 和 synchronized 的...

    Java多线程编程 线程同步机制.docx

    在内部锁中,synchronized关键字可以用于修饰方法或代码块,以实现同步。 可重入锁是锁的一个重要特性,它允许一个线程在已经持有锁的情况下再次请求该锁而不被阻塞。这是为了避免死锁的情况,比如在递归调用中。可...

    java面试题.docx

    Synchronized是重量级的,提供了互斥访问,可以锁定整个方法或代码块。 - **内存语义**:Volatile只保证变量的可见性,不保证原子性;Synchronized能保证原子性、可见性和有序性。 - **性能**:Volatile对性能影响...

    Java并发编程面试题(2022最新版)

    - 不可以,因为同一对象上的所有`synchronized`方法互斥。 **synchronized、volatile、CAS比较** - **synchronized:** 提供了原子性、可见性和有序性的保障。 - **volatile:** 只保证可见性,不保证原子性。 - *...

    java内存模型和一些多线程的资料

    synchronized提供互斥访问,保证同一时刻只有一个线程执行特定代码块;volatile则保证对变量的读写操作是原子性的,并且能立即反映到其他线程中。 5. **线程同步** 为了确保多线程环境下数据的一致性,Java提供了...

    13 问题的根源—Java内存模型简介.pdf

    主要规则包括程序顺序、锁的释放与获取、volatile变量的写读、线程启动、中断、终结以及对象初始化和`finalize()`方法。遵循这些规则可以帮助开发出可预测的多线程程序。 理解并应用Happens-Before原则是编写并发...

    Java并发编程面试题

    * as-if-serial规则和happens-before规则的区别 并发关键字 * synchronized关键字的作用 * synchronized的底层实现原理是什么? * 多线程中synchronized锁升级的原理是什么? volatile和CAS * 什么是volatile...

    java并发编程面试题

    ## as-if-srial规则和happens-before规则的区别 synchronized、volatile、CAS 比较 synchronized 和 Lock 有什么区别? volatile 关键字的作用 # Lock体系 ## Lock简介与初识AQS ### Java Concurrency API 中的 ...

    Java多线程和并发知识整理

    synchronized用于修饰实例方法、静态方法或代码块,实现线程同步。 3.2 原理分析 涉及 Monitor 概念,线程获取和释放锁的过程。 3.3 JVM中锁的优化 包括轻量级锁、偏向锁和重量级锁等优化策略。 3.4 Synchronized与...

Global site tag (gtag.js) - Google Analytics