-2
동기화 된 (new Integer (count)) 줄에서 sonar 경고가 나타납니다 대신 새 "개체"동기화.이 문제를 해결하는 방법 "대신 새"개체 "동기화"
public class PRMDataTransferHelper {
/** static variable to keep count */
private static int count = 0;
private static void done() {
synchronized (new Integer(count)) {
count--;
if (0 == count) {
cleanUp();
}
}
return;
}
}
@MarkusFischer가 말한 것처럼,'synchronized (new)'는 기본적으로 현재 스레드에서만 존재하는 객체와 동기화되므로 (즉, \ *) 의미를 갖지 않습니다. 즉, 현재 스레드가 동시에 실행되지 않도록합니다. 정의상 어쨌든 결코 일어날 수없는 그 자체입니다. (동기화는 여전히 메모리 장벽을 의미 할 수 있지만 대개 실제 메모리 장벽이 아닙니다.) –
JimmyB
특수한 경우에는 [AtomicInteger'] (https://docs.oracle.com/javase/)를 참조하십시오. 7/docs/api/java/util/concurrent/atomic/AtomicInteger.html)은 사용자 측에서 추가적인 동기화가 필요없이 필요한 작업을 정확하게 수행합니다. – JimmyB