내가 일하며 알게 된 프로그래밍
article thumbnail

예전에 서버 개발을 하면서

AI 몬스터의 코딩을 하면서 Exception 이슈가 발생하여 문제를 찾아보았다.

문제는 ArrayList를 멀티쓰레드에서 사용하며

컨테이너내의 Index 순서가 맞지 않는 문제가 발생한 것이다.

처음에 디버그를 찍어보았을땐 맞는 순서대로 들어가는 것처럼 보였으나

ArrayList의 copy가 이뤄질때 전혀 다른 인덱스 순서가 있는 것을 확인했다.

처음엔 CopyOnWriteArrayList 를 사용하면 될 줄 알았지만.

마찬가지로 멀티쓰레드 관련 이슈를 완벽히 해결할 수는 없었다.

해결법을 알아보니

멀티쓰레드에서 사용되는 자료구조는

Concurrent 관련 자료구조를 사용해야 한다는 것을 알았다.

ConcurrentHashMap, ConcurrentLinkedQueue, ConcurrentQueue 등등..

 

 

'프로그래밍 > JAVA' 카테고리의 다른 글

람다를 메서드 참조로 바꾸기(Method References)  (0) 2023.09.18
profile

내가 일하며 알게 된 프로그래밍

@CtrlVGames