J'ai 2 méthodes synchronisées dans une classe dites method1() et method2(). Un thread dit "Thread 1" détient le verrou sur cet objet de la classe en exécutant la méthode synchronisée 1() .Un autre thread dit "Thread 2", accède au verrou via method2() en même temps que "Thread 1" le verrou.deux méthodes synchronisées différentes du même objet?
Ce cas est analogue à la classe java.util.Vector ayant des méthodes add() et remove() synchronisées. Veuillez également expliquer ce cas.
Merci Borealid .. Mais si tel est le cas, pourquoi Java fournit une synchronisation spécifique aux méthodes, il peut tout autant pour la la classe entière? – JavaUser
@JavaUser: 'synchronized (this)' ne signifie pas que la classe entière est 'synchronized'. Cela signifie que vous acquérez le verrou Object de l'instance sur laquelle la méthode a été appelée. Vous ne voulez pas nécessairement que toutes les méthodes soient synchronisées (en fait, vous le ferez rarement). Pour obtenir les performances du code multithread vous devez utiliser le moins de verrous possible tout en préservant l'exactitude du programme - chaque fois que vous avez un verrou contourné, un thread attendra, ne faisant rien. – Borealid
@ Borealid..le moment que j'ai défini synchronisé dans tous les moyens de la méthode, l'objet entier est verrouillé lorsque j'appelle cette méthode ..am j'ai raison? – JavaUser