我收到了一个遗留的JAX-WS代码,我发现它不是线程安全的。因此,我想在多个线程同时访问的对象上实现CountDownLatch。 我不能在这里提出整个代码,所以我将简化引用我想要使用CountDownLatch的对象的代码,
public class JAXDataLoader extends ClassFoo implements Executor{
private static ClassBar mInstance = null;
public JAXDataLoader(ClassBar instance) {
super();
mInstance = instance;
}
}
这个mInstance
对象是我的JAX-WS客户端的一个重要对象,因为我从这个类中获取了我的URL地址和端口,即
URL address = mInstance.getConnectionEndpoint(); //returns example: http://10.11.800.111:5019
基本上我需要做的就是,
synchronized(instance){
mInstance = instance;
}
但这并没有真正奏效!有关解决方法的任何建议吗?
答案 0 :(得分:0)
进行mInstance.getConnectionEndpoint()调用时进行同步。一个很好的方法是创建一个包装类并同步该类。你不确定要实现Executor吗?
public final class ClassBarWrapper{
private final ClassBar mInstance;
public ClassBarWrapper(ClassBar instance){
this.mInstance=instance;
}
public URL synchronize getConnectionEndpoint(){
return mInstance.getConnectionEndpoint();
}
}