Java中线程池的作用有哪些

  介绍

本篇文章给大家分享的是有关Java中线程池的作用有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强> 1。简介

使用线程池可以避免线程的频繁创建以及销毁。

JAVA中提供的用于实现线程池的API:

癑AVA中线程池的作用有哪些"

执行人,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

Java中线程池的作用有哪些