En travaillant sur IntelliJ
, je ne peux pas vérifier si le thread tient le verrou ou non.
Sur l'interface graphique Eclipse, il y a une icône semblable à lock
contre le thread, nous indiquant qu'elle contient que lock
.
Dans l'instantané de code ci-dessous, mon thread est à notifyElementAdded()
et tient le verrou cependant, dans une pile de threads, il n'y a pas d'icône ou d'indication de Intellij
Ma question est donc de savoir comment vérifier la même chose sur IntelliJ GUI.
Cela peut être une demande de fonctionnalité potentielle pour IntelliJ pour l'inclure dans son produit GUI.
Par programme, pour vérifier cela, vous pouvez utiliser la méthode Java.lang.Thread.holdsLock () qui renvoie true si et seulement si le thread actuel détient le verrou du moniteur sur l'objet spécifié
public static boolean holdsLock(Object obj)
Ci-dessous l'extrait de la méthode d'exécution pour référence,
public void run() {
/* returns true if thread holds monitor lock */
// returns false
System.out.println("Holds Lock = " + Thread.holdsLock(this));
synchronized (this) {
// returns true
System.out.println("Holds Lock = " + Thread.holdsLock(this));
}
}