달력

2

« 2025/2 »

  • 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

'JAVA이야기'에 해당되는 글 119

  1. 2011.08.27 반복문을 실행하는 코드를 동기화시키는 방법은 비효율적이다.
반복문을 실행할 때 다른 스레드가 Collection의 데이터를 변경할 수 있다.
이를 방지하기 위해 동기화를 걸어야 하는데, 이 때문에 수행속도가 느려질 수 있다.

반복문을 실행한다는 것은 일반적으로 무거운 작업의 수행단위이다.
그러므로, 작업시간이 많이 소요되고 이에 따른 다른 스레드들은 이 자원을 획득하기 위해 대기를 해야한다.
이에 따라, 전체적인 수행속도가 느려질 수 있고, 수행하는 도중에 다른 코드가 다른 락을 확보해야 한다면 데드락에 빠질 위험도 있다.
 
해결방법은 clone메소드를 사용해서 Collection을 복사하고, 루프를 도는 방법인데 이 또한 복사본을 만드는데 시간이 오래 걸린다.

상황에 따라 적절한 전략을 짜야한다.
Collection의 객체들이 많은지, 개별 element마다 작업시간이 얼마나 걸리는지, 등 등을 고려해본다.

 

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

futureTask  (0) 2011.08.27
CountDownLatch  (0) 2011.08.27
AppLevel에서 바인딩 변수 사용하기  (0) 2011.08.23
IBM의 JIT Compiler  (0) 2011.08.21
Execution Engine  (0) 2011.08.21
:
Posted by НooпeУ


Code Start Code End