CUP核数、线程数、任务处理量之间关系是什么样的?是不是处理同一个任务的线程越多,处理任务速度越快?

java多线程... java多线程 展开
 我来答
ahyyxx222
2012-06-01 · TA获得超过2532个赞
知道小有建树答主
回答量:1405
采纳率:33%
帮助的人:1212万
展开全部
楼上解释的后半部分有问题。
线程数至少要相当于CPU核心数才能达到理论上的充分利用CPU。
一个线程通常只能做一个任务,在JAVA原生设计上是这样的。
但由于一个任务不一定只依赖CPU工作,还要依赖磁盘、网络、或者等待其他线程的结果。所以一个线程不会随时都在用CPU,所以可以创建比CPU核心数多很多的线程去一起执行任务,让CPU不会闲着。
CPU在多个线程间切换执行要占用性能,创建和销毁线程也会占用CPU性能,线程池是为了减少线程创建和销毁损耗的性能而存在的。
线程越多耗在管理线程上的CPU性能也越多,而用来执行任务的CPU性能就越少,所以不是越多越好。视任务对CPU的占用率来决定,能刚刚使CPU达到饱和最好
追问
你说的是CPU单核的情况,但是如果是多核呢?如双核的情况下,我创建4个线程,每个核分配两个线程,这样就把4个线程分成两个组。对于运行在单核的两个线程,它是交替执行的,但是对于这个组来说(即运行在不同核上的线程),宏观上就是并行的了,道理是不是这样的呢?

晕!只能选一个满意答案啊?其余的答案还给不了分,不好意思啊~~
追答
多核和单核是同样道理的,只是把原来一个核要做的任务分成了四份,四个核还是按原来的单核方式分别工作。
ps.反正我的分都多得不知能干嘛了,来答答问题属于一种消磨时间的乐趣...
qiuluomuye
推荐于2016-11-12 · TA获得超过181个赞
知道答主
回答量:52
采纳率:100%
帮助的人:22.3万
展开全部
线程最少等于核数,或者N*核数,核数越多,可以执行的线程也越多,可以处理的任务量肯定更快。任务是由线程来执行的,一个任务可以有多个线程。按这种道理线程是越多处理速度越快。但是会出现一个问题,线程多了,并发的概率越大,数量也越多,这时候反而会降低性能,所以才会引入线程池,来控制线程数。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式