2015-01-09 5 views
1

я реализовал 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? Нужно ли мне продлевать службу-исполнитель, если да?

+0

Какой код? – SMA

ответ

2

Я не вижу никакого способа сделать это со встроенным имплантатом. Однако ExecutorCompletionService является довольно простым кодом и является GPL, поэтому вы можете скопировать его для собственного использования и изменить его для обработки своего пользовательского Будущего.