您进行的每个命令和方法调用都必须由任何线程执行。从该线程的角度来看,它本身就是当前线程。因此,换句话说:Thread.sleep(delay)
暂停执行该Thread.sleep()
方法的线程。
另外,请记住,多线程和多个内核之间只有非常遥远的关系。
甚至在多核CPU普及之前,几乎每个操作系统都支持繁重的多线程(或多任务处理,对于本次讨论的目的基本上是同一件事)操作。
在现代OS中,这是通过一种称为抢先式多任务处理的技术来完成的。基本上,这意味着OS可以强制暂停当前正在运行的进程,并允许另一个进程在短时间内运行,从而提供了实际并行处理的错觉。
而且由于给定进程中通常会花费大量时间来等待一些外部I / O(网络,磁盘等),这甚至意味着您可以更有效地使用CPU(因为进程会花大量时间等待)在IO上,另一个进程可以花费进行实际计算)。
作为撰写本文时的示例,我的笔记本电脑只有13个线程(大多数线程可能正在休眠,实际上只有少数几个线程会运行和/或等待运行),尽管它只有4个内核。
tl; dr虽然多个内核允许多个线程在同一时间实际执行,但是即使只有一个内核,您也可以拥有多线程,并且这样做的差异很小(显然,除了原始性能之外)