直到现在我的印象是同时启动的 2 个线程也是并行执行的(同时运行它们的代码),但我最近阅读了一些文档并且我了解到它们实际上采用打开他们代码的执行,因此第一个线程的代码没有与第二个线程的代码同时执行。 我的理解正确吗?
如果是,那么多线程比单线程执行速度快多少? 我问这个是因为唯一的区别是单线程顺序执行代码,而多线程可以轮流执行,但仍然应该花费相同的时间,因为它没有并行执行
最佳答案
a) 在多处理器机器上,线程实际上可以并行运行(每个 CPU 一个)
b) 如果您的线程在等待 IO 等时调用 Thread.sleep()
,它会使资源可供其他线程使用。所以多线程应用程序在处理外部资源时实际上比单线程应用程序更快
关于Java线程实际上不是并行执行的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19207985/