Java线程实际上并不是并行执行的?

Ali*_*lin 5 java parallel-processing multithreading

到目前为止,我的印象是同时启动的2个线程也是并行执行的(两者同时运行它们的代码),但我最近阅读了一些文档,我明白他们实际上已经轮流使用了执行他们的代码,因此第一个线程的代码片段没有与第二个线程的一段代码同时执行. 我的理解是否正确?

如果是,那么多线程如何比一个线程执行更快? 我问这个是因为唯一的区别是单个线程执行代码顺序,而多线程可以轮流执行,但仍然应该花费相同的时间,因为它没有什么并行完成

Sea*_*oyd 8

a)在多处理器机器上,线程实际上可以并行运行(每个CPU一个)

b)如果你的线程Thread.sleep()在等待IO等时调用,它会使资源可用于其他线程.因此,在处理外部资源时,多线程应用程序实际上比单线程应用程序更快