我有一个像这样的 RejectedExecutionHandler 和一个 Runnable 任务的线程池。
sExecutorService = new ThreadPoolExecutor( ...    new MyRejectionHandler() );
interface MyTask extends Runnable { ... }
class MyTaskImpl implements MyTask { ...}     
我执行这样的任务
   sExecutorService.submit(myTask);        
在rejectedExecution 的情况下,我希望获得被拒绝的Runnable(即MyTask)并在其中设置一些字段将其标记为被拒绝。但我无法将其投射到 MyTask。那么传递给rejectExecution的runnable到底是什么?我提交的似乎不是 MyTask 。以及如何在 RejectedExecutionHandler 中获取被拒绝的任务。
public class MyRejectionHandler implements RejectedExecutionHandler{  
   public void rejectedExecution(Runnable runnable, ThreadPoolExecutor executor)  {
    MyTask myTask = (MyTask) runnable; // exception
    myTask.doSomething();
   }
java.lang.ClassCastException: java.util.concurrent.FutureTask cannot be cast to MyTask