В чём отличие wait(100) от sleep(100)?​

Оба метода используются в механизме многопоточности в Java. wait(long ms) можно вызвать в синхронизированном блоке кода с целью поставить нить на паузу на время, переданное внутрь метода или же пока другая нить не дёрнет уснувшую методом notify или notifyAll. Главное в том что wait после вызова освобождает мютекс захваченного монитора и другая нить может выполнять освобождённый блок кода.
Метод sleep(long ms) отправляет нить в сон на переданное время, и нить будет на паузе отведённые миллисекунды, если не произойдёт исключительной ситуации. «Легальных» способов без исключений вырвать нить из sleep не предусмотрено. Вызванный в синхронизированном блоке метод sleep не обеспечивает освобождение мютекса.


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *