단일 모드 스레드 보안
1641 단어 단일 모드
이중 잠금:'2차 판단'은 모든 라인이 이 방법을 실행하기 전에 잠금을 받을 때까지 기다리지 않습니다.
동기화하지 않으면, 여러 라인이 여러 개의 대상을 만들고, 그 다음은 앞의 것을 덮어씁니다.
if(instance==null) { instance=new Singleton(); }
private Singleton(){}
private volatile static Singleton instance = null;
public static Singleton getInstance() {
if (instance == null) {
//synchronized (this)
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
클래스를 불러올 때 대상을 초기화합니다: 불러오는 것을 지연시킬 수 없습니다. (대상이 크면 공간 낭비입니다.) 클래스를 초기화할 때 불러오는 장면에 적합합니다.
public class Singleton {
private Singleton(){
}
// final, 。 , instance 。
private static Singleton instance =new Singleton();
public static Singleton getInstance(){
return instance;
}
}
static 내부 클래스, 마운트 지연, 가상 기기 동기화 메커니즘 사용,synchronized 필요 없음
public class Singleton
{
private static class SingletonHolder
{
public final static Singleton instance = new Singleton();
}
public static Singleton getInstance()
{
return SingletonHolder.instance;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 디자인 모델의 단례 모델소프트웨어 개발 과정에서 우리는 라인 탱크(threadpool), 캐시(cache), 대화상자, 선호 설정 등 하나만 필요로 하는 대상이 종종 있다.이러한 대상이 여러 개의 실례를 만들면 프로그램 행위 이상, 자원 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.