Java多线程三个线程可访问三种同步方法

时间:2019-05-10 06:30:28

标签: java multithreading

最近,我在一次采访中得到一个场景,其中我有三个线程A,B,C共享一个类的相同对象,该对象包含三个同步方法A,B,C。要求是让线程访问相应的方法,例如线程A可以调用方法A,线程B可以调用方法B,线程C可以调用方法C而没有任何阻塞,但是当第三个线程已经在该方法中时,没有两个线程可以进入同一方法 对于两个Theads,我能够通过使A线程获取对象级别锁和2线程获取类级别日志来解决此问题。但是当我们有三个或更多线程时,我仍然不确定如何做同样的事情。

好,所以我将尝试澄清这些事情。 我有一个产生三个线程的类

Class MainClass{
....
Object obj=new Object()
 ThreadA a=new ThreadA(obj);
 ThreadB b=new ThreadB(obj);
 ThreadC c=new ThreadC(obj);
a.start();
b.start();
c.start();
}

Now I have three different classes that extends Thread 

ThreadA extends Thread{
.....

public void run(){
  methodA();
}
public void methodA(){
//do something
}
}

ThreadB extends Thread{
.....

public void run(){
  methodB();
}
public void methodB(){
//do something
}
}

ThreadC extends Thread{
.....

public void run(){
  methodC();
}
public void methodC(){
//do something
}
}

现在我需要实现这三个线程之间的同步,使得线程可以并行调用方法A,方法B,方法C,但是没有两个线程可以调用同一方法。因此,对于两个线程,我可以通过使方法A在对象级别上同步而方法B在类级别上同步来实现此目的。但是我不确定在有三个线程的情况下如何处理相同的情况。 希望这会有所帮助

0 个答案:

没有答案