SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
74 Curso de Java
Threads:
deadlock
Thread 1 Thread 2
objeto 1 objeto 2
bloqueia bloqueia
quer usar
Deadlock
public static void main(String[] args) {
final String recurso1 = "recurso1";
final String recurso2 = "recurso2";
Thread t1 = new Thread() {
public void run() {
synchronized (recurso1) {
System.out.println("Thread 1: bloqueou recurso 1");
try { Thread.sleep(100);} catch (Exception e) {}
System.out.println("Tentando acessar recurso 2");
synchronized (recurso2) {
System.out.println("Thread 1: bloqueou recurso 2");
}
}
}
};
Thread t2 = new Thread() {
public void run() {
synchronized (recurso2) {
System.out.println("Thread 2: bloqueou recurso 2");
try { Thread.sleep(100);} catch (Exception e) {}
System.out.println("Tentando acessar recurso 1");
synchronized (recurso1) {
System.out.println("Thread 2: bloqueou recurso 1");
}
}
}
};
t1.start();
t2.start();
}
Lição
de casa
• Crie um semáforo (sinal de trânsito)
usandoThreads. O semáforo deve
ficar verde por x segundos, depois
brevemente amarelo seguido de y
segundos na cor vermelha.
https://github.com/loiane/curso-java-basico
Código Fonte:
Não conhece Git/Github?
http://www.loiane.com/2013/11/
screencast-git-e-github-para-iniciantes
http://loiane.training
Fórum para dúvidas + certificado do curso.
Cadastro em:
Obrigada!
http://loiane.com
facebook.com/loianegroner
twitter.com/loiane
https://github.com/loiane
youtube.com/loianegroner
http://loiane.training

Mais conteúdo relacionado

Mais procurados

Threads 04 Variáveis atômicas
Threads 04 Variáveis atômicasThreads 04 Variáveis atômicas
Threads 04 Variáveis atômicasHelder da Rocha
 
Threads 08: Executores e Futures
Threads 08: Executores e FuturesThreads 08: Executores e Futures
Threads 08: Executores e FuturesHelder da Rocha
 
Threads 03: Ciclo de vida, aplicações e boas práticas
Threads 03: Ciclo de vida, aplicações e boas práticasThreads 03: Ciclo de vida, aplicações e boas práticas
Threads 03: Ciclo de vida, aplicações e boas práticasHelder da Rocha
 
Threads 06: Coleções concorrentes
Threads 06: Coleções concorrentesThreads 06: Coleções concorrentes
Threads 06: Coleções concorrentesHelder da Rocha
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysLoiane Groner
 
Threads 07: Sincronizadores
Threads 07: SincronizadoresThreads 07: Sincronizadores
Threads 07: SincronizadoresHelder da Rocha
 
Apresentação de Ruby com Watir webdriver
Apresentação de Ruby com Watir webdriverApresentação de Ruby com Watir webdriver
Apresentação de Ruby com Watir webdriverRafael Lima
 
[Curso Java Basico - Exceptions] Aula 48: multiplos catch
[Curso Java Basico - Exceptions] Aula 48: multiplos catch[Curso Java Basico - Exceptions] Aula 48: multiplos catch
[Curso Java Basico - Exceptions] Aula 48: multiplos catchLoiane Groner
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsHelder da Rocha
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)Helder da Rocha
 
Coroutines tech summit
Coroutines  tech summitCoroutines  tech summit
Coroutines tech summitPaulo Sato
 
Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Helder da Rocha
 
[Curso Java Basico] Aula 64: Classes aninhadas: internas, locais e anonimas
[Curso Java Basico] Aula 64: Classes aninhadas: internas, locais e anonimas[Curso Java Basico] Aula 64: Classes aninhadas: internas, locais e anonimas
[Curso Java Basico] Aula 64: Classes aninhadas: internas, locais e anonimasLoiane Groner
 
Spock Framework
Spock FrameworkSpock Framework
Spock FrameworkIsmael
 

Mais procurados (20)

Threads 04 Variáveis atômicas
Threads 04 Variáveis atômicasThreads 04 Variáveis atômicas
Threads 04 Variáveis atômicas
 
Threads 08: Executores e Futures
Threads 08: Executores e FuturesThreads 08: Executores e Futures
Threads 08: Executores e Futures
 
Threads 03: Ciclo de vida, aplicações e boas práticas
Threads 03: Ciclo de vida, aplicações e boas práticasThreads 03: Ciclo de vida, aplicações e boas práticas
Threads 03: Ciclo de vida, aplicações e boas práticas
 
Threads 06: Coleções concorrentes
Threads 06: Coleções concorrentesThreads 06: Coleções concorrentes
Threads 06: Coleções concorrentes
 
Threads 09: Paralelismo
Threads 09: ParalelismoThreads 09: Paralelismo
Threads 09: Paralelismo
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
 
Threads 07: Sincronizadores
Threads 07: SincronizadoresThreads 07: Sincronizadores
Threads 07: Sincronizadores
 
Apresentação de Ruby com Watir webdriver
Apresentação de Ruby com Watir webdriverApresentação de Ruby com Watir webdriver
Apresentação de Ruby com Watir webdriver
 
Threads e sockets java
Threads e sockets javaThreads e sockets java
Threads e sockets java
 
[Curso Java Basico - Exceptions] Aula 48: multiplos catch
[Curso Java Basico - Exceptions] Aula 48: multiplos catch[Curso Java Basico - Exceptions] Aula 48: multiplos catch
[Curso Java Basico - Exceptions] Aula 48: multiplos catch
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e Streams
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)
 
Threads
ThreadsThreads
Threads
 
Coroutines tech summit
Coroutines  tech summitCoroutines  tech summit
Coroutines tech summit
 
Threads
ThreadsThreads
Threads
 
Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)
 
Thread Java
Thread JavaThread Java
Thread Java
 
[Curso Java Basico] Aula 64: Classes aninhadas: internas, locais e anonimas
[Curso Java Basico] Aula 64: Classes aninhadas: internas, locais e anonimas[Curso Java Basico] Aula 64: Classes aninhadas: internas, locais e anonimas
[Curso Java Basico] Aula 64: Classes aninhadas: internas, locais e anonimas
 
Puppet 3 em 2017
Puppet 3 em 2017Puppet 3 em 2017
Puppet 3 em 2017
 
Spock Framework
Spock FrameworkSpock Framework
Spock Framework
 

Destaque

[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...
[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...
[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...Loiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...
[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...
[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...Loiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 42: Palavra chave final
[Curso Java Basico - Orientacao a Objetos] Aula 42: Palavra chave final[Curso Java Basico - Orientacao a Objetos] Aula 42: Palavra chave final
[Curso Java Basico - Orientacao a Objetos] Aula 42: Palavra chave finalLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 37: Heranca
[Curso Java Basico - Orientacao a Objetos] Aula 37: Heranca[Curso Java Basico - Orientacao a Objetos] Aula 37: Heranca
[Curso Java Basico - Orientacao a Objetos] Aula 37: HerancaLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 36: Relacionamento tem um
[Curso Java Basico - Orientacao a Objetos] Aula 36: Relacionamento tem um[Curso Java Basico - Orientacao a Objetos] Aula 36: Relacionamento tem um
[Curso Java Basico - Orientacao a Objetos] Aula 36: Relacionamento tem umLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 27: Classes e metodos com par...
[Curso Java Basico - Orientacao a Objetos] Aula 27: Classes e metodos com par...[Curso Java Basico - Orientacao a Objetos] Aula 27: Classes e metodos com par...
[Curso Java Basico - Orientacao a Objetos] Aula 27: Classes e metodos com par...Loiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 28: Pacotes (packages) e import
[Curso Java Basico - Orientacao a Objetos] Aula 28: Pacotes (packages) e import[Curso Java Basico - Orientacao a Objetos] Aula 28: Pacotes (packages) e import
[Curso Java Basico - Orientacao a Objetos] Aula 28: Pacotes (packages) e importLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 41: Heranca: classes abstratas
[Curso Java Basico - Orientacao a Objetos] Aula 41: Heranca: classes abstratas[Curso Java Basico - Orientacao a Objetos] Aula 41: Heranca: classes abstratas
[Curso Java Basico - Orientacao a Objetos] Aula 41: Heranca: classes abstratasLoiane Groner
 
[Curso Java Basico] Aula 57: Wrappers: classes de tipos primitivos
[Curso Java Basico] Aula 57: Wrappers: classes de tipos primitivos[Curso Java Basico] Aula 57: Wrappers: classes de tipos primitivos
[Curso Java Basico] Aula 57: Wrappers: classes de tipos primitivosLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...Loiane Groner
 
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referenciaLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 45: Interfaces e Polimorfismo
[Curso Java Basico - Orientacao a Objetos] Aula 45: Interfaces e Polimorfismo[Curso Java Basico - Orientacao a Objetos] Aula 45: Interfaces e Polimorfismo
[Curso Java Basico - Orientacao a Objetos] Aula 45: Interfaces e PolimorfismoLoiane Groner
 
[Curso Java Basico] Aula 60: Escopo de Variaveis
[Curso Java Basico] Aula 60: Escopo de Variaveis[Curso Java Basico] Aula 60: Escopo de Variaveis
[Curso Java Basico] Aula 60: Escopo de VariaveisLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 43: Classe Object
[Curso Java Basico - Orientacao a Objetos] Aula 43: Classe Object[Curso Java Basico - Orientacao a Objetos] Aula 43: Classe Object
[Curso Java Basico - Orientacao a Objetos] Aula 43: Classe ObjectLoiane Groner
 
[Curso Java Basico] Aula 62: Varargs
[Curso Java Basico] Aula 62: Varargs[Curso Java Basico] Aula 62: Varargs
[Curso Java Basico] Aula 62: VarargsLoiane Groner
 
[Curso Java Basico] Aula 17: Loop for
[Curso Java Basico] Aula 17:  Loop for[Curso Java Basico] Aula 17:  Loop for
[Curso Java Basico] Aula 17: Loop forLoiane Groner
 
[Curso Java Basico] Aula 73: Threads: resume, suspend e stop
[Curso Java Basico] Aula 73: Threads: resume, suspend e stop[Curso Java Basico] Aula 73: Threads: resume, suspend e stop
[Curso Java Basico] Aula 73: Threads: resume, suspend e stopLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 31: Modificadores private e p...
[Curso Java Basico - Orientacao a Objetos] Aula 31: Modificadores private e p...[Curso Java Basico - Orientacao a Objetos] Aula 31: Modificadores private e p...
[Curso Java Basico - Orientacao a Objetos] Aula 31: Modificadores private e p...Loiane Groner
 
[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printf[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printfLoiane Groner
 
[Curso Java Basico - Exceptions] Aula 52: criando sua propria exception
[Curso Java Basico - Exceptions] Aula 52: criando sua propria exception[Curso Java Basico - Exceptions] Aula 52: criando sua propria exception
[Curso Java Basico - Exceptions] Aula 52: criando sua propria exceptionLoiane Groner
 

Destaque (20)

[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...
[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...
[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...
 
[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...
[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...
[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...
 
[Curso Java Basico - Orientacao a Objetos] Aula 42: Palavra chave final
[Curso Java Basico - Orientacao a Objetos] Aula 42: Palavra chave final[Curso Java Basico - Orientacao a Objetos] Aula 42: Palavra chave final
[Curso Java Basico - Orientacao a Objetos] Aula 42: Palavra chave final
 
[Curso Java Basico - Orientacao a Objetos] Aula 37: Heranca
[Curso Java Basico - Orientacao a Objetos] Aula 37: Heranca[Curso Java Basico - Orientacao a Objetos] Aula 37: Heranca
[Curso Java Basico - Orientacao a Objetos] Aula 37: Heranca
 
[Curso Java Basico - Orientacao a Objetos] Aula 36: Relacionamento tem um
[Curso Java Basico - Orientacao a Objetos] Aula 36: Relacionamento tem um[Curso Java Basico - Orientacao a Objetos] Aula 36: Relacionamento tem um
[Curso Java Basico - Orientacao a Objetos] Aula 36: Relacionamento tem um
 
[Curso Java Basico - Orientacao a Objetos] Aula 27: Classes e metodos com par...
[Curso Java Basico - Orientacao a Objetos] Aula 27: Classes e metodos com par...[Curso Java Basico - Orientacao a Objetos] Aula 27: Classes e metodos com par...
[Curso Java Basico - Orientacao a Objetos] Aula 27: Classes e metodos com par...
 
[Curso Java Basico - Orientacao a Objetos] Aula 28: Pacotes (packages) e import
[Curso Java Basico - Orientacao a Objetos] Aula 28: Pacotes (packages) e import[Curso Java Basico - Orientacao a Objetos] Aula 28: Pacotes (packages) e import
[Curso Java Basico - Orientacao a Objetos] Aula 28: Pacotes (packages) e import
 
[Curso Java Basico - Orientacao a Objetos] Aula 41: Heranca: classes abstratas
[Curso Java Basico - Orientacao a Objetos] Aula 41: Heranca: classes abstratas[Curso Java Basico - Orientacao a Objetos] Aula 41: Heranca: classes abstratas
[Curso Java Basico - Orientacao a Objetos] Aula 41: Heranca: classes abstratas
 
[Curso Java Basico] Aula 57: Wrappers: classes de tipos primitivos
[Curso Java Basico] Aula 57: Wrappers: classes de tipos primitivos[Curso Java Basico] Aula 57: Wrappers: classes de tipos primitivos
[Curso Java Basico] Aula 57: Wrappers: classes de tipos primitivos
 
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...
 
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia
 
[Curso Java Basico - Orientacao a Objetos] Aula 45: Interfaces e Polimorfismo
[Curso Java Basico - Orientacao a Objetos] Aula 45: Interfaces e Polimorfismo[Curso Java Basico - Orientacao a Objetos] Aula 45: Interfaces e Polimorfismo
[Curso Java Basico - Orientacao a Objetos] Aula 45: Interfaces e Polimorfismo
 
[Curso Java Basico] Aula 60: Escopo de Variaveis
[Curso Java Basico] Aula 60: Escopo de Variaveis[Curso Java Basico] Aula 60: Escopo de Variaveis
[Curso Java Basico] Aula 60: Escopo de Variaveis
 
[Curso Java Basico - Orientacao a Objetos] Aula 43: Classe Object
[Curso Java Basico - Orientacao a Objetos] Aula 43: Classe Object[Curso Java Basico - Orientacao a Objetos] Aula 43: Classe Object
[Curso Java Basico - Orientacao a Objetos] Aula 43: Classe Object
 
[Curso Java Basico] Aula 62: Varargs
[Curso Java Basico] Aula 62: Varargs[Curso Java Basico] Aula 62: Varargs
[Curso Java Basico] Aula 62: Varargs
 
[Curso Java Basico] Aula 17: Loop for
[Curso Java Basico] Aula 17:  Loop for[Curso Java Basico] Aula 17:  Loop for
[Curso Java Basico] Aula 17: Loop for
 
[Curso Java Basico] Aula 73: Threads: resume, suspend e stop
[Curso Java Basico] Aula 73: Threads: resume, suspend e stop[Curso Java Basico] Aula 73: Threads: resume, suspend e stop
[Curso Java Basico] Aula 73: Threads: resume, suspend e stop
 
[Curso Java Basico - Orientacao a Objetos] Aula 31: Modificadores private e p...
[Curso Java Basico - Orientacao a Objetos] Aula 31: Modificadores private e p...[Curso Java Basico - Orientacao a Objetos] Aula 31: Modificadores private e p...
[Curso Java Basico - Orientacao a Objetos] Aula 31: Modificadores private e p...
 
[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printf[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printf
 
[Curso Java Basico - Exceptions] Aula 52: criando sua propria exception
[Curso Java Basico - Exceptions] Aula 52: criando sua propria exception[Curso Java Basico - Exceptions] Aula 52: criando sua propria exception
[Curso Java Basico - Exceptions] Aula 52: criando sua propria exception
 

[Curso Java Basico] Aula 74: Threads: deadlocks