2011-03-09 3 views
0

우리는 실행을 위해 대기열에서 작업을 끌어 당기는 ThreadPoolExecutor를 보유하고 있습니다. 특정 유형의 객체의 경우 예 : 우리는 서로 다른 인스턴스에서 병렬 작업을 수행 할 수 있습니다. 그러나 단일 인스턴스에 대한 작업은 순서대로 수행해야합니다.ThreadPool Executor의 특정 객체에 대한 시퀀싱 작업

연속적으로 삽입 된 두 항목이 스레드 스케줄링으로 인해 비 결정적 순서로 수행 될 수 있기 때문에 스레드 풀이이를 보장 할 수 없습니다. 이 표준 자바 라이브러리를 달성하기위한 수단이 표시되지 않습니다. 이 기능을 제공하는 타사 솔루션이 있습니까?

우리는이 방법을 스스로 구현할 수 있지만 다소 복잡한 문제이므로이 시점에서 해결 방법을 강구합니다.

감사

답변

0

당신은 각 개체에 대한 큐를 만들고 해당 개체에 대한 다음 작업을 수행 할 수있는 ThreadPoolExecutor에 작업을 추가 할 수 있습니다. 개체가 동시에 수행되지 않도록하려면 개체 또는 큐를 잠글 수 있습니다.

1

ThreadPoolExecutorPriorityBlockingQueue으로 만들면 어떨까요? "우선 순위"는 인스턴스 ID 또는 유사한 항목을 그룹화 할 수있는 항목으로 구별 할 수있는 비교 자로 정의 할 수 있습니다.