假设我有两个A和B类
public class A
{
public synchronized void doSomethingA
{
//Do stuff
}
}
public class B
{
public synchronized void doSomethingB
{
//Do other stuff
}
}
我有两个线程同时运行,让我们称它们为x和y。
由于方法是同步的,因此当x在那里时,y不可能访问dosomethingA,但是当x正在执行doSomethingB时,它可以访问doSomethingA。
当x在doSomethingA或doSomethinB中时,有没有办法阻止y做任何事情?
答案 0 :(得分:0)
有很多方法。最直接的方法是使用ReentrantLock`。
它提供与synchronized
相同的功能,但您自己负责管理锁定。您需要在类之间共享一个,这样两个方法就可以使用它来锁定。