[英]How to Junit test a synchronized object not accessed by two threads at same time?
[英]How to use CountDownLatch/Synchronized on an object that is being accessed by multiple threads?
我收到了遺留的JAX-WS代碼,發現它不是線程安全的。 因此,我想對多個線程同時訪問的對象實施CountDownLatch。 我無法在此處放置整個代碼,因此我將簡化代碼,以引用要在其上使用CountDownLatch的對象,
public class JAXDataLoader extends ClassFoo implements Executor{
private static ClassBar mInstance = null;
public JAXDataLoader(ClassBar instance) {
super();
mInstance = instance;
}
}
當我從此類獲取URL地址和端口時,此mInstance
對象對於我的JAX-WS客戶端是重要的對象,即
URL address = mInstance.getConnectionEndpoint(); //returns example: http://10.11.800.111:5019
基本上我需要做的是
synchronized(instance){
mInstance = instance;
}
但是,這實際上不起作用! 有任何解決方法的建議嗎?
進行mInstance.getConnectionEndpoint()調用時進行同步。 做到這一點的一種好方法是制作一個包裝器類並同步該類。 不確定要實現執行器嗎?
public final class ClassBarWrapper{
private final ClassBar mInstance;
public ClassBarWrapper(ClassBar instance){
this.mInstance=instance;
}
public URL synchronize getConnectionEndpoint(){
return mInstance.getConnectionEndpoint();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.