Java 다중 스레드에서 단일 모드 참조

단례에는 여러 가지 작법이 있는데, 본례는 게으름뱅이식 단례의 일종이다.높은 병렬 환경에서 주의해야 할 것은 다음과 같다.
1. 하나의 예가 병렬적으로 접근하고 그에 상응하는 getInstance 방법을 호출할 때도 여러 개의 실례 대상을 만들 수 있으며 자물쇠를 채우는 것이 필요하다.
2.synchronized를 사용하는 것이 비교적 좋은 해결 방안으로 장점이 코드가 간결하다는 것이다. 단점은 이상을 던질 때 유지 보수를 처리하지 못해 시스템이 좋은 상태에 있다는 것이다.
3. 표시된 lock 설정은 좋은 해결 방안이다.
lock 코드는 다음과 같습니다.

package demo; 
 
import java.util.concurrent.locks.Lock; 
import java.util.concurrent.locks.ReentrantLock; 
 
/** 
 *   
 * @author Watson_Xu 
 * @date 2012-1-8  04:31:09 
 */ 
public final class SingletonContext { 
  private static SingletonContext sc = null; 
  private SingletonContext() { 
   
  } 
   
  private static Lock lock = new ReentrantLock(); 
  public static SingletonContext getInstance() { 
    if(sc == null) { 
      lock.lock(); 
      if(sc == null) { 
        try{ 
          sc = new SingletonContext(); 
        } finally { 
          lock.unlock(); 
        } 
      } 
    } 
    return sc; 
  } 
}
synchronized를 사용할 때 코드는 다음과 같습니다.

package demo; 
 
/** 
 *   
 * 
 * @author Watson_Xu 
 * @date 2012-1-8  04:31:09 
 */ 
public final class SingletonContext { 
  private static SingletonContext sc = null; 
 
  private SingletonContext() { 
 
  } 
 
  public static synchronized SingletonContext getInstance() { 
    if(null == sc) { 
      sc = new SingletonContext(); 
    } 
    return new SingletonContext(); 
  } 
} 

자세한 Java 구문을 보려면 다음과 같이 하십시오.《 Thinking in Java 중국어 안내서 》、《 JDK 1.7 참조 안내서 공식 영문판 》、《 JDK 1.6 API 자바 중국어 참조 안내서 》,많은 응원 부탁드립니다.

좋은 웹페이지 즐겨찾기