Junior — Middle
Como se diferenciam as funções wait() e sleep() no contexto de gestão de threads ou processos?
sobes.tech IA
Resposta da IA
As funções wait() e sleep() são usadas para controlar threads, mas têm propósitos e comportamentos diferentes.
-
sleep()pausa a execução do thread atual por um tempo determinado. O thread simplesmente 'dorme' e não usa tempo de CPU, mas não libera recursos ou bloqueios. -
wait()geralmente é chamado em um objeto de sincronização (por exemplo, em um monitor) e coloca o thread em estado de espera até que outro thread chamenotify()ounotifyAll()no mesmo objeto. Isso libera o monitor (o bloqueio), permitindo que outros threads acessem o recurso.
Exemplo em Java:
synchronized(lock) {
while (!condition) {
lock.wait(); // o thread espera e libera o bloqueio
}
// executa após a notificação
}
// exemplo de sleep
Thread.sleep(1000); // o thread simplesmente pausa por 1 segundo
Resumindo:
sleep()— pausa sem liberar bloqueios.wait()— espera liberando bloqueios e pode ser despertado por outro thread.