我有一个来自外部API的类,我想创建一个实例并从不同线程访问该对象的方法。我的问题在以下代码中注释:使用外部API对象的java中的线程安全
import java.util.concurrent.Executors;
public class ThreadSafetyQuestion {
static class ExternalAPIObject {
void method(){
}
}
private static volatile ExternalAPIObject obj;
static synchronized ExternalAPIObject syncGetObject(){
return obj;
}
public static void main(String[] args) {
Executors.newSingleThreadExecutor().submit(()-> {
ThreadSafetyQuestion.syncGetObject().method();//Is this thread safe?
ExternalAPIObject externalAPIObject = ThreadSafetyQuestion.syncGetObject();
//do some other stuff
externalAPIObject.method();//I doubt this is thread safe. How can I access this method from multiple threads in a safe way?
});
}
}
所以你说我必须在同步包装方法中包装ExternalAPIObject的每个单独的方法?呃..好的,我会听取你的建议,并就这个话题进行更多的研究。 – dQw4w9WyXcQ