Ana*_*and 11 java multithreading synchronized thread-sleep
我已经读过,Thread.sleep()它将暂停当前运行的线程指定的时间,之后它将返回runnable状态,等待它运行.
此外,如果从synchronized上下文调用,sleep()则不会释放它所持有的锁.所以我想知道什么时候会释放锁.如果线程处于休眠状态,永远不会有机会运行,那么它将始终保持锁定,然后其他线程如何进入同步方法/块.
我不确定我是否提出有效的问题.但请帮帮我.
NPE*_*NPE 17
所以我想知道什么时候会释放锁.
它将在从synchronized块退出时释放锁,而不是更早.
如果线程处于休眠状态,永远不会有机会运行,那么它将始终保持锁定,然后其他线程如何进入同步方法/块.
很简单,其他线程将无法输入与睡眠线程相同的对象上同步的代码.
总而言之,Thread.sleep()从synchronized块中调用可能不是一个好主意.