package com.sohu.cache.async; import java.util.concurrent.Callable; /** * Created by yijunzhang on 14-6-18. */ public abstract class KeyCallable<V> implements Callable<V> { private final String key; private volatile boolean cancelled = false; public KeyCallable(String key) { this.key = key; } public abstract V execute(); @Override public V call() throws Exception { if (!cancelled) { V v = execute(); return v; } return null; } public void cancel() { this.cancelled = true; } public String getKey() { return key; } public boolean isCancelled() { return cancelled; } }