Existe-t-il des différences entre les options & # 8220; synchronized & # 8221; de Java? et le verrou & # 8220; de C # & # 8221 ;?
-
03-07-2019 - |
Question
Ces deux mots clés ont-ils exactement le même effet, ou y a-t-il quelque chose que je devrais être au courant?
La solution
, les blocs de code C # lock
et Java synchronisés
sont "sémantiquement identiques", tandis que pour les méthodes, Java utilise synchronisé
tandis que C # utilise un attribut: [MethodImpl (MethodImplOptions.Synchronized)]
.
Autres conseils
Une différence intéressante non couverte dans le lien posté par Keeg: autant que je sache, il n'y a pas d'appels équivalents à la méthode en Java pour .NET Monitor.Enter et Monitor.Exit , auquel revient l'instruction C # verrouiller
. Cela signifie que vous ne pouvez pas utiliser l'équivalent de Monitor. TryEnter - bien que le paquetage java.util.concurrent.locks (à partir de la version 1.5) dispose de nombreux verrous offrant davantage de fonctionnalités.