Если anotherClass.getBS () действительно потокобезопасен, вы можете просто вызвать его из каждого из трех потоков. Он будет работать в потоке, из которого вы его вызвали.
Небольшой пример этого в действии. Код ниже производит этот вывод:
$ javac Bar.java
$ java Bar
Thread ID 9 running
Thread ID 10 running
Thread ID 8 running
Doing something on thread 9
Doing something on thread 10
Doing something on thread 8
Thread ID 9 running
Doing something on thread 9
Thread ID 8 running
Doing something on thread 8
Thread ID 10 running
Doing something on thread 10
Вот код:
public class Bar
{
static private final class MyOtherClass
{
public void doSomething()
{
System.out.println("Doing something on thread "+Thread.currentThread().getId());
}
}
static private MyOtherClass myOtherClass=new MyOtherClass();
static private final class MyThreadClass implements Runnable
{
public void run()
{
while (true)
{
try
{
Thread.sleep(1000);
}
catch (InterruptedException ie)
{
System.err.println("Interrupted");
return;
}
System.out.println("Thread ID "+Thread.currentThread().getId()+" running");
myOtherClass.doSomething();
}
}
}
static public void main(String[] args)
{
Thread t1=new Thread(new MyThreadClass());
Thread t2=new Thread(new MyThreadClass());
Thread t3=new Thread(new MyThreadClass());
t1.start();
t2.start();
t3.start();
}
}