package hdgl.db.task; import java.util.Vector; import java.util.concurrent.TimeUnit; /** * 该类用于将一个确定的值包装为AsyncResult * @author hadoop * */ public class DefiniteAsyncResult<T> implements AsyncResult<T> { T value; Vector<AsyncCallback<T>> callbacks = new Vector<AsyncCallback<T>>(); public DefiniteAsyncResult(T value){ this.value = value; } @Override public boolean cancel(boolean arg0) { return false; } @Override public T get(){ return value; } @Override public T get(long arg0, TimeUnit arg1){ return value; } @Override public boolean isCancelled() { return false; } @Override public boolean isDone() { return true; } @Override public void start() { for(AsyncCallback<T> callback :callbacks){ callback.started(); } for(AsyncCallback<T> callback :callbacks){ callback.progress(0); } for(AsyncCallback<T> callback :callbacks){ callback.progress(1); } for(AsyncCallback<T> callback :callbacks){ callback.completed(value); } } @Override public boolean supportCancel() { return false; } @Override public void addCallback(AsyncCallback<T> callback) { callbacks.add(callback); } @Override public void removeCallback(AsyncCallback<T> callback) { callbacks.remove(callback); } }