Come generare deadlock Java in modo programmatico e come analizzare deadlock

Pubblicato: 2013-07-03

Esempio di blocco dei thread Java di Crunchify

Deadlock è una situazione di programmazione in cui due o più thread sono bloccati per sempre, questa situazione si verifica con almeno due thread e due o più risorse.

Qui ho scritto un semplice programma che causerà uno scenario di deadlock e poi vedremo come analizzarlo.

Ecco un semplice esempio Java:

Produzione:

Mentre la tua app è sospesa come nell'esempio sopra, puoi ottenere un dump del thread e vedere i thread bloccati.

Ad esempio, su Mac, puoi eseguire Ctrl-\ o semplicemente usare jstack e process id per ottenere il dump del thread, il che rende molto ovvio dove si trova il deadlock.

In questo esempio, il dump del thread è simile al seguente:

Notato qui threads => Deadlock qui .. Nel prossimo esempio fornirà un semplice programma Java per generare un dump del thread sopra a livello di codice.