я реализовал PriorityExecutor основанный на http://funofprograming.blogspot.co.il/2013/11/priorityexecutorservice-for-java.html и Specify task order execution in JavaПриоритет-исполнитель с Исполнителем-сервисом, возможно ли это?
Однако я хочу использовать ExecutorCompletionService
и передать ему PriorityExecutor
Однако я получаю следующую execption:
Caused by: java.lang.ClassCastException: java.util.concurrent.ExecutorCompletionService$QueueingFuture cannot be cast to java.lang.Comparable
at java.util.concurrent.PriorityBlockingQueue.siftUpComparable(PriorityBlockingQueue.java:347)
at java.util.concurrent.PriorityBlockingQueue.offer(PriorityBlockingQueue.java:479)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1364)
at java.util.concurrent.ExecutorCompletionService.submit(ExecutorCompletionService.java:188)
at com.ibm.modmt.impl.sommosAlg.meta.PoolStrategy.multiSubmit(PoolStrategy.java:160)
at com.ibm.modmt.impl.sommosAlg.meta.MultiSOMMOSTask.multiSubmit(MultiSOMMOSTask.java:157)
at com.ibm.modmt.impl.sommosAlg.meta.MultiSOMMOSTask.call(MultiSOMMOSTask.java:85)
at com.ibm.modmt.impl.sommosAlg.meta.MultiSOMMOSTask.call(MultiSOMMOSTask.java:1)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
... 1 more
кажется что служба завершения создает свое Будущее (QueueFuture
) из моего Comaprable Future.
Кто-нибудь применил PriorityExecutor с ExecutorCompletionService? Нужно ли мне продлевать службу-исполнитель, если да?
Какой код? – SMA