[Java]ConcurrentLinkedQueue란?
java.util 에서 제공하는 Queue class는 멀티 스레드 환경에서 critical section에 대한 동기화가 적용되어 있지 않다. 즉 멀티 스레드 환경에서 Queue 객체를 사용하게 된다면 아래와 같은 코드에 문제가 발생한다. queue.poll(); poll() 함수는 Queue 객체 맨 앞에 들어있는 data를 꺼내오는 동작을 수행한다. 개발자가 원하는 동작은 꺼내오는 동시에 data가 삭제되는 것이다. 즉, 다음번 poll() 함수에서는 다른 data를 꺼내오게 될 것을 기대한다. 하지만 멀티 스레드 환경에서는 이런 기대는 만족되지 않는다. 여러 스레드 중 2개나 3개의 스레드가 poll() 함수를 동일하게 수행하는 결과가 나타날 수 있기 때문이다. 만약 queue에 [“1”, “2”..
Java
2020. 5. 5. 21:10