一个面试问题想请教一下-线程数是否开得越多越好

sweetchild1985 2014-03-20 01:08:58
电话面试的面试题,有一个线程负责读取任务数据放到内存队列,现在开了50个线程做任务处理,然后面试官就问任务处理线程是否越多越好,不考虑内存限制,也不考虑线程间的资源争夺。这道题更像是开放性的题目,我能想到的是内存限制和资源争夺,除此之外还需要考虑哪些因素?线程调度所消耗的时间?
...全文
1162 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
日知己所无 2014-03-20
这道题绝对不能回答:线程数开得越多越好
回复
teenth 2014-03-20
肯定是不能越多越好,楼上说的对
回复
insulator2008 2014-03-20
单反遇到类似的问题回答一般都是辩证的,绝对的答案一般都是有问题的。
回复
sweetchild1985 2014-03-20
引用 7 楼 lixiaohua886 的回复:
看看计算机操作系统通,在不考虑你上面说的情况下,现成切换是有代价的。过多的现成,频繁的切换只会浪费时间。现成的数量 根据实际独立任务的数量作参考,另外,还需要看服务器的配置;
嗯,切换是有代价,这个也是需要考虑的,需要看服务器的CPU核数,绑定CPU也是一个方法,避免数据飘移。
回复
sweetchild1985 2014-03-20
引用 5 楼 suciver 的回复:
线程主要和CPU挂钩的。cpu飙到100%了你内存再大有毛用
CPU确实也是一个考虑的因素,总结下来,除了内存,线程间资源竞争外,还需要考虑操作系统对线程数的限制,以及CPU的因素。 可能这样的回答面试官应该是比较满意了。 但总觉得这里面可能有些更深层次的问题,与JAVA运行环境有关。 对于有同学说根据业务来决定线程数,我也是这么回答的,不过面试官主要还是把问题引导到是否越大越好,他应该更多的是想考面试者对这方面的思考,已经抛开业务了。
回复
木鱼121 2014-03-20
看看计算机操作系统通,在不考虑你上面说的情况下,现成切换是有代价的。过多的现成,频繁的切换只会浪费时间。现成的数量 根据实际独立任务的数量作参考,另外,还需要看服务器的配置;
回复
苦瓜_Young 2014-03-20
线程是根据你的具体情况来开的 ~这东西不是钱 越多越好
回复
suciver 2014-03-20
线程主要和CPU挂钩的。cpu飙到100%了你内存再大有毛用
回复
兔子党 2014-03-20
能完成任务不就行了?
回复
lliiqiang 2014-03-20
我觉得线程多几个没有什么
回复
sweetchild1985 2014-03-20
引用 1 楼 longtian1213 的回复:
肯定不能越多越好的,操作系统对你能开多少线程都是有限制的!
嗯,这确实是需要考虑的一个因素
回复
S117 2014-03-20
肯定不能越多越好的,操作系统对你能开多少线程都是有限制的!
回复
相关推荐
发帖
Java SE
创建于2007-09-28

6.2w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2014-03-20 01:08
社区公告
暂无公告