Cómo implementar PriorityBlockingQueue con ThreadPoolExecutor y tareas personalizadas

He buscado mucho pero no he podido encontrar una solución a mi problema.

Tengo mi propia claseBaseTask, que usa unThreadPoolExecutor para manejar tareas.
Si no quiero priorizar (es decir, usar unLinkedBlockingQueue) esto funciona bien, pero cuando trato de usar unPriorityBlockingQueue yo obtengoClassCastException porque elThreadPoolExecutor envuelve mis tareas en unFutureTask objeto.
Esto obviamente está bien porque elFutureTaskno implementaComparable, pero ¿cómo resolvería el problema prioritario?
He leído que podrías anularnewTaskFor enThreadPoolExecutor, pero parece que no puedo encontrar este método en absoluto ...?

¡Cualquier sugerencia sería muy apreciada!

Algún código para ayudar:

En miBaseTask clase que tengo

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);
}

EnBaseFutureTask clase

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

    return Long.signum(diff);
}

EnBaseThreadPoolExecutor clase i anular el 3submit métodos ...
Se llama al constructor de esta clase, pero ninguno de lossubmit métodos

Respuestas a la pregunta(6)

Su respuesta a la pregunta