Comment générer un blocage Java par programme et comment analyser un blocage

Publié: 2013-07-03

Exemple de verrouillage de thread Java par Crunchify

Le blocage est une situation de programmation où deux ou plusieurs threads sont bloqués pour toujours, cette situation se produit avec au moins deux threads et deux ressources ou plus.

Ici, j'ai écrit un programme simple qui provoquera un scénario de blocage et nous verrons ensuite comment l'analyser.

Voici un exemple Java simple :

Sortir:

Pendant que votre application est suspendue comme dans l'exemple ci-dessus, vous pouvez obtenir un vidage de thread et voir les threads bloqués.

Par exemple, sur Mac, vous pouvez soit faire Ctrl-\ ou simplement utiliser jstack et process id pour obtenir le vidage du thread, ce qui rend très évident l'endroit où se trouve le blocage.

Dans cet exemple, le thread dump ressemble à ceci :

Remarqué ici Threads BLOQUÉS et EN ATTENTE threads => Deadlock ici .. Dans l'exemple suivant, nous fournirons un programme Java simple pour générer le vidage de thread ci-dessus par programme.