课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
线程池技术的应用是每一位Java编程开发程序员都在学习与应用的一个编程开发技术,而本文我们就通过案例分析来简单了解一下,线程池创建与监控方法都有哪些。
1、线程池的创建
corePoolSize:线程池的基本大小。提前调用prestartAllCoreThreads(),会把所有的基本线程启动。
workQueue:⽤于保存等待执⾏的任务的阻塞队列。
ArrayBlockingQueue基于数组实现的(先进先出)。
LinkedBlockingQueue吞吐量要高于ArrayBlockingQueue。
SynchronousQueue吞吐量要高于LinkedBlockingQueue不存储元素的阻塞队列,得等一个线程做移除操作才能继续进行,要不会一直阻塞。
PriorityBlockingQueue具有优先级的无限阻塞队列。
maximumPoolSize:线程池允许创建的⼤线程数。
threadFactory:⽤于设置创建线程的工厂可以使用谷歌的开源方法。
handler:饱和策略,阻塞队列和我们的线程的创建数都满了的时候就会饱和选择一个策略对新提交的策略进行处理。
AbortPolicy直接抛出异常。
CallerRunsPolicy只用调用者所在的线程来处理任务。
DiscardOldestPolicy丢弃队列里近的一个任务。
DiscardPolicy直接丢弃。
⾃定义自己定义一个处理方式。
keepAliveTime:线程池的⼯作线程空闲后,保持存活的时间。
unit:线程活动保持时间的单位。
2、提交任务
execute:⽤于提交不需要返回值的任务
submit:⽤于提交需要返回值的任务
shutdown:终止的时候会抛出异常
shutdownNow:中止的时候不会抛出异常
3、线程池的监控
taskCount任务的数量
completedTaskCount运行的过程中完成的任务数量
largestPoolSize曾经创建过的大的线程数量
getPoolSize线程数量
getActiveCount获取活动的线程数
扩展线程池:beforeExecute、afterExecute在线程执行前,执行后做点什么
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。