일부 작업을 수행 할 라이브러리를 확장 중입니다. 다음은 코드입니다.Java 정적 및 스레드 안전성 또는 수행 할 작업
public static synchronized String decompile(String source, int flags,UintMap properties,Map<String,String> namesMap)
{
Decompiler.namesMap=namesMap;
String decompiled=decompile(source,flags,properties);
Decompiler.namesMap=null;
return decompiled;
}
namesMap
은 정적 변수입니다. 그 스레드가 안전하지 않습니까? 이 코드가 concurently 실행되면 namesMap 변수가 변경 될 수 있습니다. 이것으로 무엇을 할 수 있습니까?
namesMap은 코드의 다른 곳에서 액세스됩니까? 그렇다면 특정 사례를 제시 할 수 있습니까? – Finbarr
다른 디 컴파일() 만 액세스 할 수 있습니다. – GorillaApe