programação concorrente - aula 06
TRANSCRIPT
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
DEADLOCK
DEADLOCK
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
DEADLOCK
O que acontece nessa imagem?
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
DEADLOCK
DeadlockO que é?:É quando uma Thread espera a execução de uma outra Thread e vice-versa. Nesta situação, existe um processo de sincronia entre dois objetos compartilhados.
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
package edu.anhanguera.prc.aula06; public class DeadLock {
public static void main(String[] args) {String carro1 = new String("Objeto 1");String carro2 = new String("Objeto 2");String carro3 = new String("Objeto 3");
Thread thread1 = new Thread(new Rodovia(carro1, carro2), "THREAD 1");
thread1.start();
Thread thread2 = new Thread(new Rodovia(carro2, carro3), "THREAD 2");
thread2.start();
Thread thread3 = new Thread(new Rodovia(carro3, carro1), "THREAD 3");
thread3.start(); }
}
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
package edu.anhanguera.prc.aula06; public class Rodovia implements Runnable {
private String carro1;private String carro2;
public Rodovia(String objeto1, String objeto2) {
this.carro1 = objeto1;this.carro2 = objeto2;
}
public void run() {System.out.println(Thread.currentThread().getName() + " - 1 - Lock no " +
carro1);synchronized (carro1) {
System.out.println(Thread.currentThread().getName() + " - 2 - Lock no " + carro2);
synchronized (carro2) {System.out.println("Lock");try {
Thread.sleep(1000);} catch (InterruptedException e) {
e.printStackTrace();}
}}System.out.println("Saindo do Lock");
}}
Obrigado !!!
ANHANGUERA – 2016.1