Executor框架概述

1. 任务Task相关的接口与类1.1 Runnable

表示一个可被执行的命令,通常用于在不同线程中执行任务。

package java.lang;public interface Runnable {();}1.2 Callable<V>

表示一个有返回结果的任务

package java.util.concurrent;public interface Callable<V> {V call() throws Exception;}1.3 Future<V>

表示一个异步任务的结果。

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;}1.4 RunnableFuture<V>

该接口继承于Runnable和Future。

package java.util.concurrent;<run();}1.5 FutureTask<V>

一个可以取消的异步任务。该类实现了RunnableFuture接口。

2. Executor框架2.1 Executor

Executor负责执行提交的Runnable任务。这个接口提供了一种将任务提交和任务执行解耦的机制。Executor通常用于代替显示创建线程。

package java.util.concurrent;public interface Executor {void execute(Runnable command);}2.2 ExecutorService

该接口继承于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;}2.3 Executors

Executors为一个静态工厂,用于生产Executor、ExecutorService、ScheduledExecutorService、ThreadFactory和Callable。

package java.util.concurrent;{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);}() {}}3. UML类图

勇于接受自己的不完美,认清自己不足的地方,

Executor框架概述

相关文章:

你感兴趣的文章:

标签云: