달력

1

« 2025/1 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2011. 9. 27. 13:02

단일 연산 변수 클래스 JAVA이야기2011. 9. 27. 13:02

단일 연산 변수(atomic variable)는 락보다 훨씬 가벼우면서 세밀한 구조를 갖고 있으며, 멀티프로세서 시스템에서 고성능의 병렬 프로그램을 작성하고자 할 때 핵심적인 역할을 한다. 
단일 연산 변수를 사용하면 스레드가 경쟁하는 범위를 하나의 변수로 좁혀주는 효과가 있으며, 이 정도의 범위는 프로그램에서 할수 있는 가장 세밀한 범위이다. 

락의 특성
- 락을 두고 경쟁이 발생하면 대기 상태에 들어가는 스레드가 나타나는데, 일부 스레드가 대기 상태에 들어가면 전체적인 CPU사용률과 공유된 메모리 버스의 동기화 트래픽이 줄어드는 효과가 있다.
- 즉, 실행가능한 큐에 쌓이는 스레드가 적어지게됨
- 반면에, 단일 연산 변수를 사용하면 경쟁 조건에 대한 처리 작업의 책임이 경쟁하는 스레드에게 넘어간다. 

경쟁이 적거나 보통의 경쟁 수준에서는 단일 연산 변수를 사용해야 확장성을 높일 수 있다.
경쟁 수준이 아주 높은 상황에서는 락을 사용하는 쪽이 경쟁에 더 잘 대응하는 모습을 알 수 있다. 

'JAVA이야기' 카테고리의 다른 글

java thread 내생각  (0) 2011.11.03
넌블로킹 알고리즘  (0) 2011.09.27
AbstractQueuedSynchronizer  (0) 2011.09.26
Semaphore와 CountDownLatch  (0) 2011.09.26
ReentrantLock  (0) 2011.09.26
:
Posted by НooпeУ


Code Start Code End