javascalautils.concurrent.Executor Maven / Gradle / Ivy
/**
* Copyright 2015 Peter Nerg
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package javascalautils.concurrent;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
/**
* Executor service used to execute work in asynchronous fashion.
* In contrast to the {@link java.util.concurrent.Executor} service provided by the Java SDK this returns non-blocking {@link Future} instances.
*
* @author Peter Nerg
* @since 1.2
*/
public interface Executor {
/**
* Executes the provided {@link Executable} sometime in the future.
*
* @param
* The type the Future is expected to deliver
* @param executable
* The executable to execute
* @return The future acting as a place holder for a response-to-be
* @since 1.2
*/
Future execute(Executable executable);
/**
* Executes the provided {@link Callable} sometime in the future.
*
* @param
* The type the Future is expected to deliver
* @param callable
* The callable to execute
* @return The future acting as a place holder for a response-to-be
* @since 1.2
*/
Future execute(Callable callable);
/**
* Executes the list of provided {@link Executable} sometime in the future.
*
* @param
* The type the Future is expected to deliver
* @param executables
* The list of executables to execute
* @return List of futures acting as a place holder for a response-to-be
* @since 1.2
*/
List> executeAll(@SuppressWarnings("unchecked") Executable... executables);
/**
* Executes the list of provided {@link Callable} sometime in the future.
*
* @param
* The type the Future is expected to deliver
* @param callables
* The list of callables to execute
* @return List of futures acting as a place holder for a response-to-be
* @since 1.2
*/
List> executeAll(@SuppressWarnings("unchecked") Callable... callables);
/**
* Initiates an orderly shutdown in which previously submitted tasks are executed, but no new tasks will be accepted. Invocation has no additional effect if
* already shut down.
*
* @since 1.2
*/
void shutdown();
/**
* Blocks until all tasks have completed execution after a shutdown request, or the timeout occurs, or the current thread is interrupted, whichever happens
* first.
*
* @param timeout
* the maximum time to wait
* @param unit
* the time unit of the timeout argument
* @return true if this executor terminated and false if the timeout elapsed before termination
* @throws InterruptedException
* if interrupted while waiting
* @since 1.2
*/
boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException;
}