package org.zstack.core.thread;
import org.zstack.header.Component;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
public interface ThreadFacade extends Component {
<T> Future<T> submit(Task<T> task);
<T> Future<T> syncSubmit(SyncTask<T> task);
Future<Void> chainSubmit(ChainTask task);
Future<Void> submitPeriodicTask(PeriodicTask task, long delay);
Future<Void> submitPeriodicTask(PeriodicTask task);
Future<Void> submitCancelablePeriodicTask(CancelablePeriodicTask task);
Future<Void> submitCancelablePeriodicTask(CancelablePeriodicTask task, long delay);
void registerHook(ThreadAroundHook hook);
void unregisterHook(ThreadAroundHook hook);
ThreadFacadeImpl.TimeoutTaskReceipt submitTimeoutTask(Runnable task, TimeUnit unit, long delay);
void submitTimerTask(TimerTask task, TimeUnit unit, long delay);
}