public <T> Task<T> scheduleWith(Map<?,?> flags, Task<T> task) { synchronized (task) { if (((TaskInternal<?>)task).getInternalFuture()!=null) return task; return submitNewTask(flags, task); } }
@Override public Future<T> getInternalFuture() { return delegate().getInternalFuture(); }
@Override public <T> Task<T> submit(Map<?,?> flags, TaskAdaptable<T> task) { if (!(task instanceof Task)) task = task.asTask(); synchronized (task) { if (((TaskInternal<?>)task).getInternalFuture()!=null) return (Task<T>)task; return submitNewTask(flags, (Task<T>) task); } }