blob: 4ef8bc4aefecc1e5e26681c5983a01558cccb24d [file] [log] [blame]
/******************************************************************************
.
. This
* program and the accompanying materials are made available under the terms of
* the Eclipse Public License 2.0 which accompanies this distribution, and is
t https://www.eclipse.org/legal/epl-2.0/
t
t SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* EclipseSource - initial API and implementation
* Gunnar Wagenknecht - added support for generics
******************************************************************************/
package org.eclipse.equinox.concurrent.future;
import org.eclipse.core.runtime.IProgressMonitor;
/**
* Abstract implementation of {@link IExecutor} and {@link IRunnableExecutor}.
* @since 1.1
*
*/
public abstract class AbstractExecutor implements IRunnableExecutor, IExecutor {
public void execute(final Runnable runnable) {
execute(new IProgressRunnable<Object>() {
public Object run(IProgressMonitor monitor) throws Exception {
runnable.run();
return null;
}
}, null);
}
public abstract <ResultType> IFuture<ResultType> execute(
IProgressRunnable<? extends ResultType> runnable,
IProgressMonitor monitor);
/**
* Create an {@link AbstractFuture} instance. Subclasses must override to
* define the concrete type of future to return from
* {@link #execute(IProgressRunnable, IProgressMonitor)}.
*
* @param progressMonitor
* any progress monitor to provide to the future upon
* construction. May be <code>null</code>.
* @return the created future
*/
protected abstract AbstractFuture<?> createFuture(
IProgressMonitor progressMonitor);
}