java 병렬 환경 보안 초기 화
볼 수 있 도록 volatile 을 사용 하기 위해 서 는 getInstance 를 처음 호출 하면 잠 금 경쟁 을 초래 할 수 있 으 며,잠 금 내부 에 빈 칸 을 추가 해 야 합 니 다.
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class SyncSingleton {
private static volatile SyncSingleton single=null;
private static final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
private static final Lock r=lock.readLock();
private static final Lock w=lock.writeLock();
private SyncSingleton(){
}
public static SyncSingleton getInstance(){
if (single == null) { // ,
w.lock();//
try {
if (single==null) {// ,
single=new SyncSingleton();
}
} finally {
w.unlock();
}
}
return single;
}
public String readMethod(){
r.lock();
try {
//....
} finally {
r.unlock();
}
return null;
}
public void modifySingleton(){
w.lock();
try {
//....
} finally {
w.unlock();
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 병발, 고전 자물쇠 사례 - 철학가 식사다음으로 이동: 자물쇠 고전 사례: 철학 자 식사. 이 사례 는 자 물 쇠 를 초래 할 것 이다. 첨부 코드: 명령 행 매개 변 수 를 통 해 ponder 인자 가 철학 자의 사고 시간 을 설정 할 수도 있 고 젓가...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.