没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
11页
Java是天生就支持并发的语言,支持并发意味着多线程,线程的频繁创建在高并发及大数据量是非常消耗资源的,因为java提供了线程池。这篇文章主要介绍下并发包下的Executor接口,Executor接口虽然作为一个非常旧的接口(JDK1.5 2004年发布),但是很多程序员对于其中的一些原理还是不熟悉,因此写这篇文章来介绍下Executor接口,同时巩固下自己的知识。
资源推荐
资源详情
资源评论
Java Executor 并发框架(一)
一、概述
是天生就支持并发的语言,支持并发意味着多线程,线程的频繁创建在高并发及大数据量是非常消
耗资源的,因为 提供了线程池。在 以前的版本中,线程池的使用是及其简陋的,但是在
后,有了很大的改善。 之后加入了 包, 包的
加入给予开发人员开发并发程序以及解决并发问题很大的帮助。这篇文章主要介绍下并发包下的
接口, 接口虽然作为一个非常旧的接口( 年发布),但是很多程序员
对于其中的一些原理还是不熟悉,因此写这篇文章来介绍下 接口,同时巩固下自己的知识。如
果文章中有出现错误,欢迎大家指出。
二、Executors 工厂类
对于数据库连接,我们经常听到数据库连接池这个概念。因为建立数据库连接时非常耗时的一个操作,其
中涉及到网络 的一些操作。因此就想出把连接通过一个连接池来管理。需要连接的话,就从连接池里
取一个。当使用完了,就“关闭”连接,这不是正在意义上的关闭,只是把连接放回到我们的池里,供其他
人在使用。所以对于线程,也有了线程池这个概念,其中的原理和数据库连接池是差不多的,因此
中也提供了线程池的功能。
线程池的作用:线程池就是限制系统中使用线程的数量以及更好的使用线程
根据系统的运行情况,可以自动或手动设置线程数量,达到运行的最佳效果:配置少了,将影响系统
的执行效率,配置多了,又会浪费系统的资源。用线程池配置数量,其他线程排队等候。当一个任务执行
完毕后,就从队列中取一个新任务运行,如果没有新任务,那么这个线程将等待。如果来了一个新任务,
但是没有空闲线程的话,那么把任务加入到等待队列中。
为什么要用线程池:
减少线程创建和销毁的次数,使线程可以多次复用
可以根据系统情况,调整线程的数量。防止创建过多的线程,消耗过多的内存(每个线程 左
右)
里面线程池的顶级接口是 ,但是严格意义上讲 并不是一个线程池,而只是一个
执行线程的工具。真正的线程池接口是 。 类,提供了一系列工厂方法用于
创先线程池,返回的线程池都实现了 接口。
比较重要的几个类:
真正的线程池接口。
!
能和 "#$"#" 类似,解决那些需要任务重复执行的问题。
"!%
的默认实现。
!"!%
继承 "!% 的 ! 接口实
现,周期性任务调度的类实现。
要配置一个线程池是比较复杂的,尤其是对于线程池的原理不是很清楚的情况下,很有可能配置的线程池
不是较优的,因此在 类里面提供了一些静态工厂,生成一些常用的线程池。
1. newSingleThreadExecutor
&' ()"!*+
&'
()"!*"!,-!,-+
创建一个单线程的线程池。这个线程池只有一个线程在工作,也就是相当于单线程串行执行所有任务。如
果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。此线程池保证所有任务的执行顺序按
照任务的提交顺序执行。
2.newFixedThreadPool
&' (,"!%*"! +
&' (,"!%*"! .
"!,-!,-+
创建固定大小的线程池。每次提交一个任务就创建一个线程,直到线程达到线程池的最大大小。线程池的
大小一旦达到最大值就会保持不变,在提交新任务,任务将会进入等待队列中等待。如果某个线程因为执
行异常而结束,那么线程池会补充一个新线程。
3. newCachedThreadPool
&' (/!"!%*+
&' (/!"!%*"!,-
!,-+
创建一个可缓存的线程池。如果线程池的大小超过了处理任务所需要的线程,
那么就会回收部分空闲(0 秒处于等待任务到来)的线程,当任务数增加时,此线程池又可以智能的添
加新线程来处理任务。此线程池的最大值是 ) 的最大值*123+。
4.newScheduledThreadPool
&' !
(!"!%*%4+
&' !
(!"!%*%4."!,-
!,-+
创建一个大小无限的线程池。此线程池支持定时以及周期性执行任务的需求。
实例:
注:使用了 java8 的 lambda 表达式以及 stream
1.newSingleThreadExecutor
&' )"!" 5
&' #*)67) +5
8
()"!*+9
#)*.+:!*3;**+3;5
)!<#8"!"!*+)<#*+9
- #&*=> !?=@!<#+9
A++9
-5
$$ &
!(*+9
("#*."#B/<+9
A!*&&+5
&"*+9
A>-5
:*C "#*++5
剩余10页未读,继续阅读
资源评论
悠闲饭团
- 粉丝: 150
- 资源: 3301
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功