20200408 - threads simultâneos java impasse dez

Impasse (DeadLock)

Visão geral impasse
impasse fio refere-se a dois ou mais dos outros tópicos detêm os recursos necessários uns aos outros, devido às características de sincronizado, um segmento detém um recurso, ou para obter um bloqueio, o bloqueio será liberado antes que o segmento outros tópicos não são obter o bloqueio, ea espera teria sido morto, então isso vai causar um impasse.

condições de impasse

condições mutuamente exclusivos: um recurso ou um bloqueio só pode ser ocupada por um fio após um primeiro segmento para adquirir o bloqueio até que o segmento libera o bloqueio, outros segmentos são incapazes de chegar ao bloqueio.

Posse e esperando: um fio tem que adquirir um bloqueio, em seguida, obter um outro bloqueio no processo, mesmo que ele não vai ficar menor que o desbloqueio foi obtida.

condição inalienável: qualquer segmento não pode ser forçado a começar um outro thread já tem um bloqueio

Laço condição de espera: Linha A Linha B mantém o bloqueio, o bloqueio segurando fio Um fio B. .

Como evitar impasses

sequência de bloqueio: bloqueio rosca na mesma ordem.
tempo de bloqueio, o segmento do processo para adquirir um bloqueio em um certo limite de tempo, se não for dado tempo para obter, mesmo, não force a si mesmo. Esta necessidade de usar algum do Lock API.

Detecção de impasse

Depois de ocorrer um impasse, o programa ficou preso e nada acontece, mas o programa ainda está em execução, e, portanto, precisa da ajuda de alguns

O primeiro a utilizar jps exibe -l uma máquina virtual processos e monitores (principal função onde a máquina virtual executa a classe principal de executar
a classe), bem como o nome de uma máquina virtual local, esses processos de identificação único

Publicado 955 artigos originais · ganhou elogios 43 · vê 80000 +

Acho que você gosta

Origin blog.csdn.net/qq_36344771/article/details/105386460
Recomendado
Clasificación