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

标签 java multithreading parallel-processing

直到现在我的印象是同时启动的 2 个线程也是并行执行的(同时运行它们的代码),但我最近阅读了一些文档并且我了解到它们实际上采用打开他们代码的执行,因此第一个线程的代码没有与第二个线程的代码同时执行。 我的理解正确吗?

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

最佳答案

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

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

关于Java线程实际上不是并行执行的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19207985/

相关文章:

java - 未报告的异常NegativeNumber;必须被捕获或宣布被扔出

python-3.x - 如何在 Python 3 中导入线程包?

c# - 在多线程应用程序中使用 Thread.Sleep 的原因是什么?

c - 如何同步多个appsink

java - 将图像按钮与 TextView XML 对齐

java - 递归时的操作顺序是什么?

android - 是否可以在 Service 类中使用 AsyncTask?

C# 事件 : How to process event in a parallel manner

java - nextLine 如何丢弃输入?

java - 同步ScheduledExecutorService触发的线程