A diferença entre os métodos wait () e sleep () em Java

métodos wait () e sleep () em Java

1. espere ()

A função do método wait() é permitir que a thread que adquiriu o bloqueio libere o bloqueio e entre no bloco de espera. Portanto, o método wait() deve ser chamado somente quando o bloqueio for adquirido, caso contrário, uma exceção será lançada, por exemplo:

public class Test{ 
​public
    static void main(String[] args) throws InterruptedException { 
        Test test = new Test(); 
        test.wait(); 
    } 
}

saída:

Ao chamar wait, você pode especificar quanto tempo esperar, caso contrário, o thread aguardará indefinidamente até ser ativado pelo método notify ou notifyAll.

O cenário de uso do método wait: O método wait geralmente é usado para exigir que um recurso continue executando o código, e o recurso é adquirido e preparado por outros encadeamentos. Neste ponto, você pode liberar o bloqueio e entrar na espera. Geralmente a estrutura é a seguinte:

sincronizard(lock) { 
     while(condição não é verdadeira) { 
         lock.wait(); 
     } 
    // condição é verdadeira, trabalho 
} 
​//
outro thread 
sincronizard(bloqueio) { 
    // preparar recursos 
    lock.notifyAll(); 
}

Dois, dormir ()

  • O método sleep() fará com que o thread atual entre em bloqueio;

  • Se o thread atual tiver um bloqueio, o bloqueio não será liberado quando o sono entrar no bloco;

  • A chamada do método sleep deve especificar o tempo de hibernação;

  • O método sleep é um método estático em Thread.

3. A diferença entre wait() e sleep()

  • A thread que espera entra deve ser despertada pelo método notify ou notifyAll.

  • A chamada do método wait requer que a thread atual adquira o bloqueio, ou seja, só pode ser chamada no método sincronizado.

  • O método wait é um método de instância em Object e sleep é um método estático em Thread.

  • O método wait fará com que o thread atual libere o bloqueio e, em seguida, entre na espera de bloqueio, enquanto o sleep não liberará o bloqueio.

Acho que você gosta

Origin blog.csdn.net/m0_57614677/article/details/129010649
Recomendado
Clasificación