介绍
本篇文章给大家分享的是有关Java中线程池的作用有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<强> 1。简介强>
使用线程池可以避免线程的频繁创建以及销毁。
JAVA中提供的用于实现线程池的API:
执行人,ExecutorService, AbstractExecutorService, ThreadPoolExecutor, ForkJoinPool都位于JAVA . util . concurrent包下。
* ThreadPoolExecutor ForkJoinPool为线程池的实现类。
<强> 2。遗嘱执行人强>
public interface Executor { ,/* * ,,*,向线程池提交一个任务,交由线程池去执行 ,,*/void 才能执行(Runnable 命令); }
*该接口声明了执行(可运行命令)方法,负责向线程池中提交一个任务。
<强> 3。ExecutorService接口强>
public interface ExecutorService extends Executor { ,/* * ,,*,关闭线程池(等待队列中的任务被执行完毕) ,,*/void 才能;shutdown (); ,/* * ,,*,立刻关闭线程池(不执行队列中的任务,并尝试中断当前执行的任务) ,,*/List<才能;Runnable>, shutdownNow (); ,/* * ,,*,判断线程池是否处于关闭状态。 ,,*/boolean 才能isShutdown (); ,/* * ,,*,判断线程池是否处于终止状态。 ,,*/boolean 才能isTerminated (); ,/* * ,,*,若在指定时间内线程池处于终止状态则立即返回真,否则超过时间后仍未为终止状态则返回错误的。 ,,*/boolean 才能;awaitTermination (long 超时,TimeUnit 单元),throws InterruptedException; ,/* * ,,*,向线程池提交一个任务并返回包含指定类型的未来(根据可调用的泛型) ,,*/& lt;才能T>, Future,提交(Callable ,任务); ,/* * ,,*,向线程池提交一个任务并指定任务执行结果的类型,返回包含指定类型的未来。 ,,*/& lt;才能T>, Future ,提交(Runnable 任务,T 结果); ,/* * ,,*,向线程池提交一个任务并返回未知类型的未来。 ,,*/Future<?才能祝辞,提交(Runnable 任务); ,/* * ,,*,向线程池提交多个任务并返回指定类型的未来列表。 ,,*/& lt;才能T>, List 祝辞,invokeAll (Collection<?, extends Callable 祝辞,任务),throws InterruptedException; ,/* * ,,*,向线程池提交多个任务并返回指定类型的未来列表,如果在指定时间内没有执行完毕则直接返回。 ,,*/& lt;才能T>, List 祝辞,invokeAll (Collection<?, extends Callable 祝辞,任务,long 超时,TimeUnit 单元),throws InterruptedException; ,, ,/* * ,,*,向线程池提交多个任务,当任意一个任务执行完毕后返回指定类型的未来。 ,,*/& lt;才能T>, T invokeAny (Collection<?, extends Callable 祝辞,任务),throws InterruptedException,, ExecutionException; ,/* * ,,*,向线程池提交多个任务,在指定时间内,当任意一个任务执行完毕后返回指定类型的未来,若超时则抛出异常。 ,,*/& lt;才能T>, T invokeAny (Collection<?, extends Callable 祝辞,任务,long 超时,TimeUnit 单元),throws InterruptedException,,中,TimeoutException; }
public interface Future, { ,/* * ,,*,中断任务的执行 ,,*/boolean 才能取消(boolean mayInterruptIfRunning); ,/* * ,,*,判断任务是否中断成功 ,,*/boolean 才能isCancelled (); ,/* * ,,*,判断任务是否执行完成 ,,*/boolean 才能结束(); ,, ,/* * ,,*,获取任务的执行结果直到任务执行完毕(阻塞线程) ,,*/V 才能;get (), throws InterruptedException,, ExecutionException; , ,/* * ,,*,获取任务的执行结果,若在指定时间内任务仍然没有执行完毕则抛出TimeoutException ,,*/V 才能得到(long 超时,TimeUnit 单元),throws InterruptedException,,中,TimeoutException; }
*执行()方法不能获取任务的执行结果,而提交()方法能够根据返回的未来实例获取任务的执行结果。
<强> 4。ThreadPoolExecutor