是否可以阻止线程访问“A' A'线程正在执行' B&#39 ;?

时间:2016-05-15 19:33:52

标签: java multithreading

假设我有两个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做任何事情?

1 个答案:

答案 0 :(得分:0)

有很多方法。最直接的方法是使用ReentrantLock`。

它提供与synchronized相同的功能,但您自己负责管理锁定。您需要在类之间共享一个,这样两个方法就可以使用它来锁定。