多线程的睡眠()方法和良率()方法有什么区别?

2022-08-31 14:13:39

当前执行线程在遇到调用 sleep() 时,线程会立即进入休眠状态。而对于 yield() 线程进入可运行状态/就绪状态。


答案 1

我们可以通过使用 Thread 类的 3 种方法中的任何一种来阻止线程的执行:

  1. yield()方法暂时暂停当前正在执行的线程,以便为具有相同优先级或更高优先级的其余等待线程提供执行机会。如果没有等待线程或所有等待线程的优先级较低,则同一线程将继续执行。当获得执行机会时,生成的线程由线程调度程序决定,其行为取决于供应商。

  2. join()如果 t2 上有任何执行线程 t1 调用(即 ),则 t1 将立即进入等待状态,直到 t2 完成其执行。join()t2.join()

  3. sleep()根据我们的要求,我们可以使线程在指定的时间段内处于休眠状态(希望我们最喜欢的方法不需要太多的解释)。


答案 2

sleep()使线程在给定的时间内绝对停止执行;如果没有其他线程或进程需要运行,CPU 将处于空闲状态(并且可能进入省电模式)。

yield()基本上意味着线程没有做任何特别重要的事情,如果需要运行任何其他线程或进程,它们应该运行。否则,当前线程将继续运行。