@Override
    public void cancel() {
        if (!mDone) {
            synchronized (this) {
                mDone = true;
                // clear the task form pool
                if (mPool != null) {
                    //noinspection SynchronizeOnNonFinalField
                    synchronized (mPool) {
                        if (mPool != null) {
                            try {
                                mPool.remove(this);
                            } catch (Exception e) {
                                e.getStackTrace();
                            } finally {
                                mPool = null;
                            }
                        }
                    }
                }
            }
        }
    }
ActionAsyncTask use to {@link Action} and {@link Runnable}
<p/>
See {@link Run}
caprice/kit-handler/src/main/java/net/qiujuer/genius/kit/handler/ActionAsyncTask.java