栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我的Java程序应使用多少个线程?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我的Java程序应使用多少个线程?

线程很好,但正如其他人指出的那样,您必须高度了解瓶颈。您的算法听起来很容易受到多个CPU之间的缓存争用的影响-
这特别令人讨厌,因为它有可能影响所有线程的性能(通常您会考虑使用多个线程来继续处理,而等待缓慢或繁忙延迟IO操作)。

高速缓存争用是使用多个CPU处理高度并行化算法的一个非常重要的方面:确保将内存利用率考虑在内。如果可以构造数据对象,以便每个线程都有自己的内存在运行,则可以大大减少CPU之间的缓存争用。例如,拥有一个较大的int数组并在该数组的不同部分上使用不同的线程可能会更容易-
但是在Java中,对该数组的边界检查将试图访问内存中的相同地址,可能导致给定的CPU必须从L2或L3缓存中重新加载数据。

将数据拆分成自己的数据结构,然后配置这些数据结构,使其成为线程局部的(使用ThreadLocal可能更为理想
-实际使用OS中的构造可提供保证CPU可以用来优化缓存的构造。

我能给您的最好的建议是测试,测试,测试。不要对CPU的性能做任何假设-如今,CPU中发生了 很多
不可思议的事情,通常会产生违反直觉的结果。还要注意,JIT运行时优化将在此处增加一层额外的复杂性(可能不错,也可能不好)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/494960.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号