java - 同一个对象的两个不同的同步方法?

标签 java synchronization vector

我在一个类中有 2 个同步方法,比如 method1() 和 method2()。一个线程说“线程 1”通过执行同步方法 1() 持有该类对象的锁。另一个线程说“线程 2”,同时通过方法 2() 访问锁,而“线程 1”持有锁。

这种情况类似于具有同步 add() 和 remove() 方法的 java.util.Vector 类。 也请解释一下这个案例。

最佳答案

没有。 Java 中的 synchronized 方法等同于将主体包裹在 synchronized (this) block 中的整个方法。因此,如果一个线程处于 synchronized 方法中,则另一个线程不能同时处于同一对象上的不同synchronized 方法中。

这与 Vector 相关的方式是您不希望某些代码试图删除元素,而其他代码试图添加元素。这就是临界区的概念;您不仅不希望其他人尝试做您正在做的事情,您也不希望其他人做一些会干扰的不同事情。

关于java - 同一个对象的两个不同的同步方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3226580/

相关文章:

java - Android - 媒体播放器 : How to separating fastForward to another method (that later will be call)?

java - 在 Java 中查找网页上文本框的总数 - Selenium

java - org.apache.commons.io.IOUtils.toByteArray 的 Android 等价物

c++ - 同步 MPI-2 单向通信的顺序问题

c++ - 从 vector 末尾指向类变量的指针

c++ - 我怎么能给c++ vector赋值

java - 如何将 testNG 实例传递到另一个类

每一小时 Java 同步值

php - 将 Android 数据库与服务器数据库同步

c++ - void Print(vector<string>) 函数不打印