Java线程池详解-创新互联

创建:

新城网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联2013年开创至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。

一般情况下创建线程池的方法是ThreadPoolExecutor pool = new ThreadPoolExecutor();

或者使用ExecutorService executorService = new ThreadPoolExecutor();

参数解释:

1. corePoolSize:[5] 核心线程数[一直存在除非 (allowCoreThreadTime0ut) ]; 线程池,创建好以后就准备就绪的线程数量,就等待来接受异步务去执行

2. maximumPoolsize:[200] 大线程数量; 控制资源

3.keepAliveTime:存活时间。如果当前的线程数量大于core数量。并且线程空闲大于指定的keepAliveTime就释放; 释放空闲的线程数量为(maximumPoolSize-corePoolSize) 。

4.unit;时间单位

5.BlockingqueueworkQueue:阻塞队列。如果任务有很多,就会将目前多的务放在队列里面.只要有线程空闲,就会去队列里面取出新的任务继续执行(默认size是Integer的大值。如果不指定size可能会造成程序内存不够,所以需要根据业务指定大小)

6.threadFactory:线程的创建工厂

7.RejectedExecutionHandler handler:如果队列满了,按照我们指定的拒绝策略拒绝执行任务

线程池的工作顺序:

1)、线程池创建,准备好core数量的核心线程,准备接受任务

1.1、core满了,就将再进来的任务放入阻塞队列中。空闲的core就会自己去阳塞队列获取任务执行

1.2、阻塞队列满了,就直接开新线程执行,大只能开到max指定的数量

1.3、max满了就用RejectedExecutionHandler拒绝任务

1.4、max都执行完成,有很多空闲,在指定的时间keepALiveTime以后,释放max-core这些线程

拒绝策略有哪些:

  1. DiscardOldstPolicy丢弃最老的任务

  1. CallerRunsPolicy 只用调用者所在的线程来运行任务

  1. DiscardPolicy 丢弃最新的任务(不会抛出异常)

  1. AbortPolicy丢弃最新的任务(会抛出异常)

Executor框架下的常见线程池简介:

  1. FixedThreadPool 创建固定线程数量的线程池

  1. SingleThreadExcutor 创建使用单个线程的线程池

  1. CachedThreadPool 创建一个会根据需要创建新线程的线程池

  1. ScheduledThreadPoolExecutor 创建一个在给定的延迟之后运行任务,或者定期执行任务的线程池

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章标题:Java线程池详解-创新互联
文章源于:http://ybzwz.com/article/deecch.html