Como implementar PriorityBlockingQueue com ThreadPoolExecutor e tarefas personalizadas

Pesquisei bastante, mas não consegui encontrar uma solução para o meu problema.

Eu tenho minha própria turmaBaseTask, que usa umThreadPoolExecutor para lidar com tarefas.
Se eu não quiser priorizar (ou seja, usar umLinkedBlockingQueue) isso funciona muito bem, mas quando tento usar umPriorityBlockingQueue eu receboClassCastException porque oThreadPoolExecutor envolve minhas tarefas em umFutureTask objeto.
Obviamente, isso é bom porque oFutureTasknão implementaComparable, mas como resolveria o problema de prioridade?
Eu li que você poderia substituirnewTaskFor noThreadPoolExecutor, mas não consigo encontrar esse método ...?


Qualquer sugestão será muito bem-vinda!

Algum código para ajudar:

No meuBaseTask classe que eu tenho

private static final BlockingQueue<Runnable> sWorkQueue = new PriorityBlockingQueue<Runnable>();

private static final ThreadFactory sThreadFactory = new ThreadFactory() {
    private final AtomicInteger mCount = new AtomicInteger(1);

    public Thread newThread(Runnable r) {
        return new Thread(r, "AsyncTask #" + mCount.getAndIncrement());
    }
};

private static final BaseThreadPoolExecutor sExecutor = new BaseThreadPoolExecutor(
    1, Integer.MAX_VALUE, 10, TimeUnit.SECONDS, sWorkQueue, sThreadFactory);

private final BaseFutureTask<Result> mFuture;

public BaseTask(int priority) {
    mFuture = new BaseFutureTask<Result>(mWorker, priority);
}

public final BaseTask<Params, Progress, Result> execute(Params... params) {

    /* Some unimportant code here */

    sExecutor.execute(mFuture);
}

NoBaseFutureTask&nbsp;classe

@Override
public int compareTo(BaseFutureTask another) {
    long diff = this.priority - another.priority;

    return Long.signum(diff);
}

NoBaseThreadPoolExecutor&nbsp;classe eu substituo os 3submit&nbsp;métodos...
O construtor nesta classe é chamado, mas nenhum dossubmit&nbsp;métodos