我正在努力更好地掌握与互斥锁有关的睡眠函数调用。如果一个线程持有互斥锁,而另一个线程的睡眠过期,则控制是否立即返回第一个线程,或者线程是否必须至少等待保持互斥锁被释放,然后再切换回另一个线程?
答案 0 :(得分:3)
Thread.sleep()
与任何类型的锁定之间没有任何关系。
Thread.sleep(nnn)
的调用在至少nnn
毫秒之后才会返回(除非它抛出InterruptedException),并且这是开发人员需要知道的全部内容。
几乎所有关于互斥锁(例如,synchronized
块)的知识都是,只有一个线程可以同时锁定同一个实例。一旦所有者解锁,锁定的互斥锁就可用于等待线程。它与sleep()
调用中是否存在任何线程无关。