나는 싱글 톤 클래스를 생성자에서 두 번 검사한다.Findbugs : NP_LOAD_OF_KNOWN_NULL_VALUE - 싱글 톤 클래스 더블 체크
Findbugs가 아래 오류를보고했습니다.
Load of known null value in ... NP_LOAD_OF_KNOWN_NULL_VALUE
class SomeClass {
private Object lock = new Object();
private Map<String,Resource> resourceMap = new HashMap<>();
public Resource getResource(String resourceId) {
if (resourceMap.get(resourceId) == null) {
synchronized(lock) {
if (resourceMap.get(resourceId) == null)
Resource resource = new Resource();
resourceMap.put(resourceId,resource);
}
}
return resourceMap.get(resourceId);
}
}
내가 정적 객체 참조와 함께 갈 수 있지만 요구 사항이 고유 요청 ID에 대한 단일 개체를 만드는 것입니다
.여러 요청에 대해 요청 ID 1이 표시됩니다. 따라서 우리는 런타임에 모든 요청 ID에 대해 단일 객체를 만들어야합니다.
감사합니다.
소스 코드에는«request id»라는 개념이 없습니다. [최소한의 완전하고 검증 가능한 예제] (http://stackoverflow.com/help/mcve)를 제공해 주시겠습니까? –
이 컨텍스트에서 인수없이 '동기화'된 것으로 보이지 않습니다 (예 : 'synchronized (this)'. (http://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.19) 올바른 코드를 표시하는지 확인하십시오. – ajb
죄송합니다. 전체 코드를 입력하지 않았습니다. 지금 업데이트했습니다. – user1578872