7
ANHANGUERA – 2016.1 PROGRAMAÇÃO CONCORRENTE AULA 06 – DEADLOCK Prof. Thomás da Costa [email protected]

Programação Concorrente - Aula 06

Embed Size (px)

Citation preview

Page 1: Programação Concorrente - Aula 06

ANHANGUERA – 2016.1

PROGRAMAÇÃO CONCORRENTEAULA 06 – DEADLOCK

Prof. Thomás da [email protected]

Page 2: Programação Concorrente - Aula 06

PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa

DEADLOCK

DEADLOCK

Page 3: Programação Concorrente - Aula 06

PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa

DEADLOCK

O que acontece nessa imagem?

Page 4: Programação Concorrente - Aula 06

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.

Page 5: Programação Concorrente - Aula 06

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(); }

}

Page 6: Programação Concorrente - Aula 06

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");

}}

Page 7: Programação Concorrente - Aula 06

Obrigado !!!

ANHANGUERA – 2016.1