J'ai étudié les internes de Java depuis un certain temps. Je suis curieux d'apprendre et de comprendre comment le threading/verrouillage se déroule en Java. Ainsi, afin d'accéder à une méthode synchronisée ou à un bloc synchronisé, le thread doit d'abord acquérir le verrou sur l'objetJava threads internes
Donc, maintenant, voici ce dont j'ai besoin d'un peu plus de lumière. Donc, à chaque fois que le thread acquiert le verrou sur l'objet, incrémente-t-il en interne la valeur du sémaphore? Si la réponse est oui, jetons un coup d'œil à ce scénario.
class ABC{
public void method_1(){
synchronized(xyz){
....
}
}
public void method_2(){
...
synchronized(xyz){
....
}
}
}
Donc, dire il y a deux fils: Threaad 1 et 2. Discussion Supposons que le Thread1 premier et method_1 entrés donc acquis un verrou sur xyz premier. Et, disons maintenant, Thread2 entre la méthode_2 et tente d'acquérir un verrou sur xyz. Que va-t-il arriver? (Pour moi, Thread2 sera bloqué car il trouve que la valeur de sémaphore de l'objet> 0)
Faites-moi savoir si mon raisonnement est correct.
Oui. Quelle est la question? Vous répétez essentiellement la définition de la façon dont un verrou est documenté pour fonctionner. –
Oui, votre description est correcte à un niveau général. Y a-t-il quelque chose à propos de cette description qui n'a aucun sens pour vous? –