메모리 내 FIFO Java
대기열을 사용하는 응용 프로그램이 다른 스레드와 병렬로 실행되는 (예 : ThreadPool
의 일부로 스레드에서 처리 될 객체를 배치하는 경우를 고려하십시오.).Java 대기열에서 다중 스레드 처리
각 개체는 "호환 가능한"스레드로 처리되어야하며 개체와 관련된 레이블을 확인하여 호환성이 보장됩니다. 즉, 각 스레드는 모든 유형이 아닌 특정 유형의 개체를 처리 할 수 있습니다. 쓰레드가 큐에서 객체를 읽고 그것이 읽는 레이블이 그것이 지원하는 것들 중 하나가 아니라면 객체를 무시해야한다. (즉, 동일한 레이블 모든 개체들이 대기열에 증착되는 순서로 처리되어야한다)
- - 오더 처리 :
일부 추가 특성 응용 프로그램 수행한다.
- 고성능 (즉, 초당 수천 개의 "무거운"개체를 처리 할 수 있음). earlier question에 제안
하나는 ConcurrentLinkedQueue 사용할 수 있지만 하나의 큐는 라벨에 따라 입력을 분리하는 대한 까다로운 일을한다. 또는 각 스레드는 단일 레이블을 처리하도록 할당 될 수 있으므로 자체 비 동시성 대기열을 가질 수 있습니다. 또는 다른 접근법을 따라야합니다.
위의 사양을 구현하는 가장 좋은 방법은 무엇입니까?
몇 가지 방법으로 접근 할 수 있다고 생각합니다. 1) 레이블 당 동시 대기열이 있습니다. 2) 중간 정렬 소비자가 있습니다. 3) [JMS] (http://en.wikipedia.org/wiki/Java_Message_Service)를 메시징에 사용하십시오. 이 문제는 게시/구독 문제와 비슷합니다. – mkobit
게시/구독 문제이지만 성능상의 이유로 "간단한"메모리 내 큐만 사용하려고합니다. 레이블 당 동시 큐가 아마도 최상의 솔루션 일 것입니다. 고마워 +1. :-) – PNS