Cum se generează Java Deadlock în mod programatic și Cum se analizează Deadlock

Publicat: 2013-07-03

Exemplu de blocare a firelor Java de la Crunchify

Deadlock este o situație de programare în care două sau mai multe fire sunt blocate pentru totdeauna, această situație apare cu cel puțin două fire și două sau mai multe resurse.

Aici am scris un program simplu care va provoca un scenariu de blocaj și apoi vom vedea cum să-l analizăm.

Iată un exemplu simplu Java:

Ieșire:

În timp ce aplicația dvs. este suspendată ca în exemplul de mai sus, puteți obține o descărcare a firului și puteți vedea firele blocate.

De exemplu, pe Mac, puteți fie să faceți Ctrl-\ fie pur și simplu să utilizați jstack și id-ul de proces pentru a obține descărcarea firului, ceea ce face foarte evident unde se află blocajul.

În acest exemplu, descărcarea firului arată astfel:

Observat aici threads => Deadlock aici.. În exemplul următor, va furniza un program Java simplu pentru a genera descărcarea de mai sus a firului în mod programatic.