线程池(一)


prtyaa
prtyaa 2023-12-28 16:52:33 52838 赞同 0 反对 0
分类: 资源
Java中的线程不是越多越好,线程是Java中的一个对象,而且每个线程都有自己的工作内存, 1、线程创建、销毁需要时间,消耗性能 2、线程过多,会占用很多内存 3、操作系统需要频繁切换线程上下文(线程都想被运行),影响性能 4、如果创建时间+ 销毁时间 > 执行任务时间 就很不合算

线程池的推出,就是为了方便的控制线程数量。

上面一排是接口,底下一排是实现类

用例:

1、testCommon是submit任务的,for循环任务一共有30个,当提交第一个任务的时候,去和corepoolSize判断一下,小于corepoolSize,所以创建一个工作线程来执行任务,一直提交到第5个线程的时候,等于corepoolSize,创建第5个线程执行任务,一共创建了5个线程。等到第6个任务来的时候,发现大于corepoolSize了,这时候去判断工作队列是否已满?

我创建的是无界的工作队列new SynchronousQueue<Runnable>() ,后面的括号里没有数字,代表无界队列。

2、判断工作队列是否已满?那当然是不满的,因为是无界,往进随便传任务都满不了。

3、这时候maximumPoolSize就没用了

4、如果工作队列是有界的话,参数为5,那么就要判断工作队列是否已经满了,显然没满,队列里还是空的,如果没满,就放进队列中5个任务,但是不创建线程,如果队列满了的话,这时候就要判断maximumPoolSize了,此时只有步骤1中的5个线程,5肯定小于maximumPoolSize,所以继续创建6,7,8,9,10线程来执行任务,直到达到了maximumPoolSize这个数字10,如果再进来任务的话,那么就执行拒绝策略了。

执行过程如下图:

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
prtyaaL2
粉丝 1 资源 1949 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  125
统信桌面专业版【全盘安装UOS系统】介绍  120
银河麒麟桌面操作系统安装佳能打印机驱动方法  112
银河麒麟桌面操作系统 V10-SP1用户密码修改  105
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益209.03元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!