IT/Programming / / 2023. 4. 26. 13:20

<Effective Java> RULE 69 wait이나 notify대신 병행성 유틸리티를 이용하라

반응형

 

wait와 notify를 정확하게 사용하는 것이 어렵기 때문에, 릴리즈 1.5부터 자바 플랫폼에서 제공하는 고수준 병행성 유틸리티를 사용해야 한다.

 

java.util.concurrent에 포함된 유틸리티

· 실행자 프레임워크(executor framework)

· 병행 컬렉션(concurrent collection)

· 동기자(synchronizer)

 

병행성 컬렉션은 List, Queue, Map등의 표준 컬렉션 인터페이스에 대한 고성능 병행 컬렉션 구현을 제공한다. 병행성을 높이기 위해 동기화를 내부적으로 처리한다.

· 컬렉션 외부에서 병행성을 처리하는 것은 불가능하다.

· 락을 걸어봐야 아무 효과가 없을 뿐만 아니라 프로그램만 느려진다.

// ConcurrentMap으로 구현한 병행 정규화 맵 - 최적이 아님
private static final ConcurrentMap<String, String> map = 
new ConcurrentHashMap<String, String>();

public static String intern(String s) {
    String previousValue = map.putIfAbsent(s, s);
    return previousValue = null ? s : previousValue;
}
 

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유