【发布时间】:2018-04-11 06:33:09
【问题描述】:
假设有 10 个不相交且独立的任务。如果单线程执行需要 10 分钟,每个任务需要 1 分钟,那么 10 个线程,每个任务一个线程会在 1 分钟内完成执行吗?
因为一次只能运行一条指令并且假设 CPU 只运行这个进程。 多线程不只是线程之间非常快速的上下文切换,给人一种并行处理的错觉,但实际上并不是在处理吗?
那么,既然CPU要执行的指令数是一样的,那么不管是单线程还是多线程,完成的时间不应该是一样的吗? 如果是,那不是说多线程是一种并行处理的手段是错误的吗?
【问题讨论】:
-
您似乎假设您正在执行程序的计算机只有一个 CPU 内核。对于当今活跃使用的大多数计算机而言,这不太可能是真的。对于多核 CPU 或多 CPU 系统,多线程可以实现实际的并行处理。
-
“因为一次只能运行一条指令”你在哪里找到的?
-
使用多线程并不意味着你会看到速度提升。
-
Ummm ... 使用多线程并不一定意味着您会看到速度提升。
标签: java multithreading