2017-05-14 1 views
1

ConcurrentLinkedDeque를 다중 스레드 응용 프로그램에서 사용할 수 있다는 두 가지 기본 차이점을 알고 있습니다.ConcurrentLinkedDeque 대 ArrayDeque

잘못 사용하면 응용 프로그램의 성능에 어떤 영향을 줄 수 있습니까? 예를 들어 ConcurrentLinkedDeque와 ArrayDeque를 사용해야하는 경우를들 수 있습니다.

답변

0

다중 스레드에서 큐에 대한 동기화 된 액세스가 필요한 경우 ConcurrentLinkedDeque을 사용하십시오 (그렇지 않은 경우 ArrayDeque).

마침표.

잘못된 스레드를 사용하면 멀티 스레드 설정에서 ArrayDeque에 액세스하려고하면 큐가 손상됩니다.

마침표.

성능에 대한 유일한 고려 사항입니다. 다른 모든 것은 논박의 대상입니다.

강의 끝;

+0

멀티 스레드 응용 프로그램에서 사용할 경우 어떻게 deque ArrayDeque가 손상 될 수 있습니까? – ketan

+0

'ArrayDeque'는 다중 스레드가 동시에 액세스하려고하지 않도록하는 데 필요한 스레드 동기화를 제공하지 않습니다. 예를 들어, 쓰레드 "A"가 addFirst()를 시도하는 동안, 쓰레드 "B"가 같은 시간에 _, removeFirst()를하려고하는 것을 상상해 보라. 이는 서로 충돌하여'ArrayQueue'를 혼란스러운 상태로 남겨 둘 수 있습니다. –

+0

ConcurrentLinkedDeque는 동기화를 제공하지 않습니다. 클래스와 수퍼 클래스를 Ctrl-F로하면 잠금이나 동기화 된 구문을 사용할 수 없습니다. sun.misc.Unsafe의 compreAndSwap을 사용합니다. –