O ambiente operacional deste tutorial: sistema Windows 7, versão Java 10, computador DELL G3.
1. Método de obtenção
lock(), tryLock(), tryLock(long time, TimeUnit unit) e lockInterruptably() são todos usados para adquirir bloqueios.
( 1) O método lock() é o método mais comumente usado, usado para obter bloqueios . Se o bloqueio foi adquirido por outro thread, aguarde.
( 2) O método tryLock() possui um valor de retorno, o que significa que é usado para tentar adquirir o bloqueio . Se a aquisição for bem-sucedida, ele retornará verdadeiro se a aquisição falhar (ou seja, o bloqueio foi adquirido por outro). thread), ele retorna falso, o que significa que este método retorna imediatamente, não importa o que aconteça. Você não ficará esperando lá quando não conseguir a fechadura.
( 3) O método tryLock (long time, unidade TimeUnit) é semelhante ao método tryLock(), mas a diferença é que esse método aguardará um determinado período de tempo quando o bloqueio não puder ser obtido se o bloqueio não puder ser obtido. dentro do limite de tempo, ele retorna falso. Retorna verdadeiro se o bloqueio foi obtido inicialmente ou durante o período de espera.
( 4) O método lockInterruptably() é especial Ao adquirir um bloqueio por meio deste método, se o thread estiver aguardando para adquirir o bloqueio, o thread poderá responder à interrupção, ou seja, interromper o estado de espera do thread. Ou seja, quando dois threads desejam adquirir um bloqueio por meio de lock.lockInterruptably() ao mesmo tempo, se o thread A adquirir o bloqueio neste momento e o thread B estiver apenas esperando, então o método threadB.interrupt() é chamado no thread B. Pode interromper o processo de espera do thread B.
2.Exemplos
Tome o trylock como exemplo.
Bloqueio bloqueio = ...; if(lock.tryLock()) { tentar{ //Processando tarefas }catch(Exception ex){ }finalmente{ lock.unlock(); //Libere o bloqueio } }outro { //Se o bloqueio não puder ser adquirido, faça outras coisas diretamente}
Existem muitos métodos armazenados na interface java para facilitar chamadas diretas ao usar threads. Todos estão familiarizados com a interface de bloqueio e já tivemos uma compreensão preliminar do conceito. Portanto, o método de aquisição do bloqueio ainda não deve estar muito claro.
A seguir estão os quatro métodos de aquisição de bloqueios em Java. Depois de ler o artigo, você pode fortalecer sua memória e compreensão nesta área. Se estiver interessado em outros métodos de aquisição de bloqueios, você também poderá encontrar códigos relevantes para praticar após a aula.