O deadlock é um bug no nível do sistema operacional e é a abreviação do impasse de processo. Foi proposto pela primeira vez por Dijkstra ao estudar algoritmos de banqueiros em 1965. É um dos problemas mais difíceis nos sistemas operacionais de computadores e até em todo o campo de programação simultâneo.
De fato, há muitas coisas no mundo dos computadores que precisam ser resolvidos por vários threads, porque, dessa maneira, os recursos podem ser usados para maximizar a eficiência da computação. No entanto, de fato, existem muitas situações nos sistemas de computador em que os recursos só podem ser usados por um processo por vez, como impressoras, e apenas um processo pode controlá -lo ao mesmo tempo. Em um ambiente de programação multicanal, vários processos geralmente compartilham esses recursos e um processo pode exigir mais de um recurso. Portanto, vários processos competirão por recursos limitados e a ordem de avanço será inadequada, formando uma situação de ciclo indefinido em espera. Chamamos esse impasse do estado. Simplificando, o impasse refere -se a uma situação em que vários processos percorrem os recursos que ocupam e permanecem em um impasse indefinidamente. Obviamente, se não houver força externa, todos os processos envolvidos no impasse serão sempre bloqueados.
Nome do arquivo: DeadThreadByExtend.java
Observação:
1. Ao iniciar um encadeamento, o método de início pode ser usado. O método RUN também pode ser chamado, mas é equivalente a uma chamada normal e executado no thread atual.
2. O sincronizado não pode modificar diretamente variáveis.
3. O bloco sincronizado não força o acesso de thread único a variáveis no bloco. Ele significa simplesmente que o parâmetro sincronizado (ARGS) é bloqueado ao executar instruções dentro do bloco e não é liberado até que a execução seja concluída.
pacote com.ycf.study.thread; classe fontes {int a; public void seta (int x) {synchronized (this) {this.a = x; try {thread.sleep (2000);} catch (interruptException e) {e.printstacktrace ();}}}}} S1 = new Sources (); fontes s2 = new Sources (); classe mythread1 estende java.lang.thread {@Override public void run () {System.out.println ("Thread 1 inicia"); Synchronized (s1) {System.out.println ("Thread 1 Aplica a Modify; 1 sai e libera o bloqueio ++++++++++++++++ ");}} classe mythread2 estende java.lang.thread {@Override public void run () {System.out.println (" Thread 2 inicia "; s2 "); s2.Seta (20); System.out.println (" Thread 2 Altera S2 Complete "); System.out.println (" Thread 2 se aplica ao modificar S1 "); S1.seta (10); System.out.println (" Thread 2 muda S1 e Complete);} System.out.println ("2 Thread (Threads 2 S1 e System.out.Println (" bloqueio ++++++++++++++ ");}} mythread1 mt1 = new mythread1 (); mythread2 mt2 = new mythread2 (); mt1.start (); mt2.start ();}}Resumir
O exposto acima é tudo sobre o exemplo de código de fios Java Thread neste artigo, espero que seja útil para todos. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio a este site.