티스토리 툴바


블로그 이미지
카라크라스

Leon.Kim의 공부하는 블로그입니다. mail - kalaklas@gmail.com twitter - @kalaklas

Rss feed Tistory
Java/Java Concurrency in practice 2010/03/03 01:39

쓰레드에 안전하게 클래스의 상태를 관리하기

reference : Java Concurrency in practice 

java.util.concurrent.atomic 패키지에는 숫자나 객체 참조 값에 대해 상태를 단일 연산으로 변경
할 수 있도록, atomic variable 클래스들이 이미 준비되어 있다.
java.util.concurrent.atomic
Classes  
AtomicBoolean 
AtomicInteger 
AtomicIntegerArray 
AtomicIntegerFieldUpdater 
AtomicLong 
AtomicLongArray 
AtomicLongFieldUpdater 
AtomicMarkableReference 
AtomicReference 
AtomicReferenceArray 
AtomicReferenceFieldUpdater 
AtomicStampedReference



AtomicLong등 처럼 이미 스레드에 안전하기 만들어져 있는 객체를 사용하여 
클래스의 상태를 쓰레드에 안전하게 관리 하자.



하지만, 더 많은 상태를 추가할 떄에도 그저 atomic variable을 추가하기만 해도 
충분할까?
예를들어 여러개의 AtomicRefefence 클래스를 사용해서 더 많은 상태를 추가하면,
쓰레드에 안전하게 클래스의 상태가 유지되면 기대대로 동작할까?

그렇지 않다


상태를 일관성 있게 유지하려면 관련 있는 변수들을 하나의 단일 연산으로 갱신해야
한다.
 이것을 보장하기 위해 java에서 synchronized 라는 구문을 이용한 lock을 제공한다.
(코드 보호 블럭을 지정해주는 . . . . )

다음에 계속 . .

TOTAL 19,751 TODAY 3