表示一个可被执行的命令,通常用于在不同线程中执行任务。
package java.lang;
public interface Runnable {
public void run();
}
表示一个有返回结果的任务
package java.util.concurrent;
public interface Callable<V> {
V call() throws Exception;
}
表示一个异步任务的结果。
package java.util.concurrent;
public interface Future<V> {
/**
* 取消任务的执行。
* 以下几种情况不能成功取消任务:
* 1.任务已完成。 2.任务已经被取消。 3.任务因为某些原因不能被取消。
*
* 如果成功过,任务将不会执行。
* 如果任务已经启动,参数mayInterruptIfRunning将决定执行任务线程是否应该被中断,已达到停止任务的目的。
*
* 该方法返回后,isDone()将总是返回true。
* 如果该方法返回true,isCanelled()将返回true。
*/
boolean cancel(boolean mayInterruptIfRunning);
/**
* 返回true表示任务在完成前被取消。
*/
boolean isCancelled();
/**
* 返回true表示任务完成
*
* 任务完成可能原因如下:
* 1.正常执行完成 2.异常 3.被取消
*/
boolean isDone();
/**
* 等待任务的完成,并返回结果。
*
* @return 返回任务执行结果
* @throws CancellationException 当任务被取消时
* @throws ExecutionException 当任务执行出现异常时
* @throws InterruptedException 等待过程中线程被中断时
*/
V get() throws InterruptedException, ExecutionException;
/**
* 在指定时间内等待任务的完成,并返回结果。
*
* @param 等待超时最长时间
* @param 时间单位
* @return 返回任务执行结果
* @throws CancellationException 当任务被取消时
* @throws ExecutionException 当任务执行出现异常时
* @throws InterruptedException 等待过程中线程被中断时
* @throws TimeoutException 等待超时
*/
V get(long timeout, TimeUnit unit)
throws InterruptedException, ExecutionException, TimeoutException;
}
该接口继承于Runnable和Future。
package java.util.concurrent;
public interface RunnableFuture<V> extends Runnable, Future<V> {
void run();
}
一个可以取消的异步任务。该类实现了RunnableFuture接口。
Executor负责执行提交的Runnable任务。这个接口提供了一种将任务提交和任务执行解耦的机制。Executor通常用于代替显示创建线程。
package java.util.concurrent;
public interface Executor {
void execute(Runnable command);
}
该接口继承于Executor接口。提供了管理声明周期的方法和提交任务的便利方法。
public interface ExecutorService extends Executor {
void shutdown();
List<Runnable> shutdownNow();
boolean isShutdown();
boolean isTerminated();
boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException;
<T> Future<T> submit(Callable<T> task);
<T> Future<T> submit(Runnable task, T result);
Future<?> submit(Runnable task);
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) throws InterruptedException;
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException;
<T> T invokeAny(Collection<? extends Callable<T>> tasks) throws InterruptedException, ExecutionException;
<T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
throws InterruptedException, ExecutionException, TimeoutException;
}
Executors为一个静态工厂,用于生产Executor、ExecutorService、ScheduledExecutorService、ThreadFactory和Callable。
package java.util.concurrent;
public class Executors {
public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
}
public static ExecutorService newSingleThreadExecutor() {
return new FinalizableDelegatedExecutorService
(new ThreadPoolExecutor(1, 1,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>()));
}
public static ExecutorService newCachedThreadPool() {
return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
60L, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>());
}
public static ScheduledExecutorService newSingleThreadScheduledExecutor() {
return new DelegatedScheduledExecutorService
(new ScheduledThreadPoolExecutor(1));
}
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) {
return new ScheduledThreadPoolExecutor(corePoolSize);
}
public static ThreadFactory defaultThreadFactory() {
return new DefaultThreadFactory();
}
public static ThreadFactory privilegedThreadFactory() {
return new PrivilegedThreadFactory();
}
public static <T> Callable<T> callable(Runnable task, T result) {
if (task == null)
throw new NullPointerException();
return new RunnableAdapter<T>(task, result);
}
public static Callable<Object> callable(Runnable task) {
if (task == null)
throw new NullPointerException();
return new RunnableAdapter<Object>(task, null);
}
/** Cannot instantiate. */
private Executors() {}
}
版权声明:本文为博主原创文章, 转载请标明出处http://blog.csdn.net/sun927
原文地址:http://blog.csdn.net/sun927/article/details/46760527