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