Java 线程数与处理器核心数?

Java 线程数与处理器核心数?,java,apache-spark,Java,Apache Spark,根据我目前的理解,理想情况下,为了获得最佳性能,我们不应该在处理器中创建超过内核数量的线程,因为这样会产生线程切换等开销。但这段视频说,在91分钟时,我们应该超额订阅线程,即创建比内核更多的线程,以获得更好的性能 我能想到的唯一优点是创建额外的线程所有任务都将以循环方式获得cpu周期,而不是有限的线程先完成第一组任务,然后再选择另一组 我不确定哪一个是正确的?在一个理想的世界中,线程有连续的稳定工作要做,每个核心有一个线程可能是个好主意 在现实世界中,有很多时候线程必须等待。他们等待资源可用,或

根据我目前的理解,理想情况下,为了获得最佳性能,我们不应该在处理器中创建超过内核数量的线程,因为这样会产生线程切换等开销。但这段视频说,在91分钟时,我们应该超额订阅线程,即创建比内核更多的线程,以获得更好的性能

我能想到的唯一优点是创建额外的线程所有任务都将以循环方式获得cpu周期,而不是有限的线程先完成第一组任务,然后再选择另一组


我不确定哪一个是正确的?

在一个理想的世界中,线程有连续的稳定工作要做,每个核心有一个线程可能是个好主意


在现实世界中,有很多时候线程必须等待。他们等待资源可用,或者等待用户做一些有成效的事情。当他们在等待时,核心处于空闲状态,无事可做。为什么不切换到另一个线程并完成它的工作来填补这段时间呢?

我不确定这个问题是否与编程有关。确切地说。如果每核线程谬论是真的,那么它也适用于多任务和多道程序设计,我们永远不会超越批处理计算。