`
tou3921
  • 浏览: 68681 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

线程进入一个对象的一个 synchronized 方法后

阅读更多
java面试题 写道
64 、当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法 ?
答: 不能,一个对象的一个synchronized方法只能由一个线程访问。

 关于这个问题的准确性,或者不同的情况网上有人做过测试。

个人觉得应该这么回答:

my answer 写道
1.咬文嚼字->“进入对象的synchronized 方法”->说明这个同步方法不是static的。
2.synchronized等价与synchronized(this),受保护的方法或代码块不是自身在保护而是一个锁(在这里,这个锁就是对象本身),锁不仅仅可以保护这一个synchronized 方法。在这里的情况:线程进入方法后拥有了这个锁,就是阻塞了其他线程访问 锁所保护全部方法(代码块)。
所以答案是:可以访问其他非synchronized方法,而不能访问这个对象的synchronized 方法

 应该对吧?欢迎指正

分享到:
评论

相关推荐

    多线程,高并发.pdf

    4. 当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法? 5. 简述 synchronized 和 java.util.concurrent.locks.Lock 的异同? 6. 概括的解释下线程的几种可用状态。

    java_synchronized详解

    当一个线程进入某个对象的一个`synchronized`代码块时,它会自动获得该对象的锁;离开该代码块时,则自动释放锁。如果其他线程尝试访问同一对象的其他`synchronized`代码块,它们将被阻塞,直到第一个线程释放锁为止...

    java锁机制Synchronizedjava锁机制Synchronized

    如果一个线程想要连续使用两个上锁房间,它需要每次使用完一个房间后把钥匙归还,再次拿到钥匙后才能使用下一个房间。 Synchronized 代码块 Synchronized 代码块是 Java 中的一种同步机制,它可以指定获取某个对象...

    Java synchronized详细解读.docx

    这意味着,当一个线程进入一个对象的同步代码块后,其他试图进入该同步代码块的线程会被阻塞,直到该线程完成并释放锁。这个特性确保了同一时刻对于一个特定对象,其同步代码只能被一个线程执行,从而防止数据的不...

    线程的几个重要方法.doc

    当创建一个线程并调用`start()`方法时,Java虚拟机(JVM)会自动调用`run()`方法。`run()`方法必须是`public`访问权限且无返回值,通常包含需要并发执行的代码。 2. `start()`方法 `start()`方法用于启动线程,它会...

    java-synchronized详解.doc

    1. 互斥性:当一个线程进入一个由`synchronized`修饰的方法或代码块后,其他试图进入相同同步代码的线程将会被阻塞,直到当前线程执行完毕并释放锁。 2. 锁的概念:每个对象都有一个与之关联的锁,当线程执行`...

    Java使用synchronized修饰方法来同步线程的实例演示

    当一个线程进入synchronized代码块或方法时,它会获取与该代码块或方法关联的对象锁。其他尝试进入相同代码块或方法的线程将被阻塞,直到当前线程执行完毕并释放锁。这样可以确保在任何给定时刻,只有一个线程能够...

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

    当线程进入`synchronized`代码块或方法时,会获取锁并进入临界区,执行完毕后释放锁,其他线程才能继续执行。 **synchronized基本规则:** 1. **互斥性**:当一个线程正在执行某个对象的`synchronized`方法或代码...

    [JAVA][synchronized的使用]

    `synchronized`关键字在Java中提供了互斥访问,也就是说,当一个线程进入一个对象的`synchronized`代码块或方法时,其他线程对这个对象的`synchronized`代码块或方法的访问将会被阻塞,直到当前线程执行完毕并释放...

    Android synchronized 测试案例

    当一个线程进入`synchronized`代码块或方法时,其他试图进入同一块的线程将被阻塞,直到持有锁的线程退出。 二、同步单个对象 1. 同步方法:在方法声明前加上`synchronized`关键字,使得每次只有一个线程能执行该...

    java synchronized详解

    Java的`synchronized`具备可重入性,即一个线程已经获得了某个对象的锁,那么它可以再次请求这个锁(递归调用同步方法)而不被阻塞。 8. **监视器等待与唤醒** 通过`wait()`、`notify()`和`notifyAll()`方法,线程...

    java 多线程同步方法的实例

    当一个线程进入synchronized方法或代码块时,其他试图访问同一对象的线程会被阻塞,直到该线程执行完毕并释放锁。例如,`public synchronized void method()`就是一个同步方法。 2. **wait()、notify()和notifyAll...

    Java synchronized使用案例

    1. **线程互斥**:当一个线程在执行`synchronized`代码时,其他线程必须等待该线程释放锁后才能进入。 2. **内存可见性**:确保线程在读取或修改共享变量时,能看到其他线程对变量的最新修改,避免数据不一致。 3. *...

    Java多线程synchronized关键字详解(六)共5

    `synchronized`基于Java虚拟机(JVM)的监视器锁(Monitor)机制,当一个线程进入同步块或同步方法时,会获取到对应的锁,其他试图进入的线程会被阻塞,直到持有锁的线程释放锁。 4. **锁升级与优化** - Java内存...

    Java多线程synchronized同步方法详解

    这意味着如果一个线程已经获取了某个对象的锁,并正在执行该对象的`synchronized`方法,其他试图访问同样对象的`synchronized`方法的线程将会被阻塞,直到当前线程完成该方法的执行并释放锁。 - 如果A线程持有了`...

    javasynchronized详解.pdf

    当一个线程进入这样的同步代码块,它会获取到当前对象的锁,其他试图进入同一锁的线程将会被阻塞,直到持有锁的线程退出同步代码块。 3. **锁的概念**: - 在Java中,每个对象都有一个内置的锁(也称为监视器锁)...

    java用线程两种方式

    当线程中调用wait()方法时,当前线程会释放对象的锁,并进入等待状态,直到其他线程调用同一个对象的notify()或notifyAll()方法才能唤醒。而sleep()方法则不会释放对象锁,它仅仅是让当前线程暂停执行指定的时间。在...

    synchronized关键字的用法详解

    这意味着如果多个线程尝试访问同一对象的`synchronized`代码块或方法,则只有一个线程可以执行,其他线程将被阻塞。 2. **自动解锁**:当线程退出`synchronized`代码块或方法时,JVM会自动释放持有的锁。这一点...

    Synchronized关键字的用法

    - **锁机制**:当一个线程进入`synchronized`代码块或方法时,会自动获取锁;离开时,自动释放锁。 - **互斥性**:同一时刻,只有一个线程可以拥有锁,其他试图获取锁的线程将被阻塞,直到锁被释放。 - **锁升级**:...

    synchronized 的理解

    `wait()`方法使当前线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用`notify()`或`notifyAll()`方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。 ```java synchronized (lock) { // ...

Global site tag (gtag.js) - Google Analytics