3ya*_*uya 1 java concurrency jvm multicore
我最近有机会听取有关JVM的另一个讨论.据说Java虚拟机在并发性方面做得很好.我找不到任何令人满意的答案,我认为这是一个简单的问题:当JVM运行多线程(因此使用多个虚拟核心,对吗?)它是否利用机器CPU的多个真实核心?
我听到"不总是"或"有时"作为答案; 那么有什么方法可以确保当我们设计代码来运行多个线程时,JVM也将使用CPU的多个内核?或者另一方面,是什么决定了JVM是否使用多核CPU核心?
我真的不能举一个例子说明什么时候这是必要的,但我发现它很有意思,因为我知道设计师更喜欢在项目中确定一切.在一些大型应用程序中拥有多个线程的真正重点是,如果实际上它们永远不会被并行计算?
Java线程(如常规线程)可以安排使用多个核心.关于并发编程的一个真正棘手的问题是,很难"强迫"程序使用X个核心并让这个线程在这个核心上运行,等等.换句话说,是确定性的.
它最终取决于操作系统,在某种程度上取决于硬件.但是在一天结束时,程序员应该抽象地考虑并发编程并相信调度程序正在完成它的工作.
换句话说,是的.
| 归档时间: | 
 | 
| 查看次数: | 3734 次 | 
| 最近记录: |