PriorityQueue를 @Async 메서드에 쓰는 도중 동시성 에러 발생
삭제 하는 타이밍과 읽어오는 타이밍이 겹쳐 NullPointerException이 발생했음.
이를 해결하기 위해 동시성 지원 자료구조를 사용해야한다.
우선순위 큐를 구현한 동시성 지원 자료구조는
PriorityBlockingQueue vs ConcurrentSkipList
- 차이는 ConcurrentSkipList는 기본적으로 Set구조이기 때문에 중복 Key가 저장이 안된다.
- 우리 서비스의 경우 중복 key ( price ) 데이터가 많이 삽입되므로 PriorityBlockingQueue를 써서 해결