【发布时间】:2021-08-01 19:54:34
【问题描述】:
我有一个要求,我想确保如果从类中调用特定方法“Repo.get()”,则应该在同步块(或同步方法)内调用它。我可以修改“Repo.get()”。但我无法修改调用类。
查看以下示例:
class A {
public void testA() {
Repo r = new Repo();
synchronized (this) {
r.get();
}
}
}
class B {
public void testB() {
Repo r = new Repo();
r.get();
}
}
class Repo {
public void get() {
// My code goes here.
// When called from A, we should be able to print "YES"
// When called from B, we should be able to print "NO"
}
}
我们怎样才能做到这一点?
谢谢, 尼基尔
【问题讨论】:
-
您的代码打破了同步的基本概念,即要么对不同线程的同一个对象进行同步,要么通过持有整个类的锁来进行静态同步。还有其他概念,例如锁、信号量,但这是您必须首先了解的。
标签: java multithreading synchronization synchronized