java - 访问java中的同步方法

标签 java multithreading

简单的问题,但我没有多线程经验。 如果两个线程使用相同的同步方法(在 Java 中),并且第一个线程无法在给定时间访问该方法(因为第二个线程正在使用该方法),那么第一个线程是否会等待(卡住)一段时间然后尝试再次访问它,或者它只是放弃并且根本不访问它?

最佳答案

第一个方法会阻塞并等待,直到它可以使用该方法为止,根据 doc

When one thread is executing a synchronized method for an object, all other threads that invoke synchronized methods for the same object block (suspend execution) until the first thread is done with the object.

我不是 100% 确定我是否没记错,但如果我没记错的话,JVM 不会对线程在释放锁后获取锁的顺序提供任何保证。

关于java - 访问java中的同步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29369207/

相关文章:

java - 嵌套同步块(synchronized block)

c# - 释放锁时出现 SynchronizationLockException(从未同步的代码块调用了对象同步方法。)

java - Google Protocol Buffer,在 Windows 上快,在 Ubuntu 上慢

java - 包含 Consumer 的事件将被忽略

java - 如何配置 Tomcat 以使用 Java 7

Java,持久化 HashMaps 以实现永久、可靠存储的推荐方法?

c# - 对多个方法使用同一个锁

SQL计数器增量并发问题-选择/更新问题

asp.net - Web 环境中线程的注意事项

java jdom xml 复制一段xml