一次只执行一个线程,如何同时执行多个任务?

时间:2017-04-04 00:41:07

标签: java multithreading

点击http://www.javatpoint.com/sleep()-method

它的教程只说当一个线程处于休眠状态时,另一个线程将被线程调度程序选中。所以每次只有一个线程工作?

1 个答案:

答案 0 :(得分:3)

在具有多个内核的系统上,两个线程几乎同时启动(取决于创建线程所需的时间)。

睡眠的影响可能会结束"同步"线程,以便两个线程将在相同(或非常接近相同)的时间运行和/或休眠(取决于操作系统)。 "同步"如果两个线程在彼此的一个系统计时器滴答内启动,则会发生。对于Windows,计时器通常以64hz或每个刻度15.625毫秒运行,因此两个线程将在同一刻度上每32个计时器滴答(500毫秒)退出睡眠状态。

在休眠期间,操作系统可以在与执行睡眠的线程相同的核心上运行其他线程。在这种情况下,除非系统只有一个核心(并且没有超线程),否则两个线程同时运行。

我假设System.out.println(i)是多线程安全的(因此两个线程同时有两个实例不会导致问题)。