¿Existen diferencias entre & # 8220; sincronizado & # 8221; de Java? y C # 's & # 8220; lock & # 8221 ;?
-
03-07-2019 - |
Pregunta
¿Estas dos palabras clave tienen exactamente el mismo efecto, o hay algo que debería tener en cuenta?
Solución
De acuerdo con lo siguiente: _ h ___ ___hayf="http://en.csharp_online.net/CSharp_FAQ: , los bloques de código C #
y Java sincronizado
son " semánticamente idénticos " ;, mientras que para los métodos, Java usa sincronizado
mientras que C # usa un atributo: [MethodImpl (MethodImplOptions.Synchronized)]
.
Otros consejos
Una diferencia interesante no está cubierta en el enlace publicado por Keeg: hasta donde sé, no hay llamadas de método equivalentes en Java para .NET Monitor.Enter y Monitor.Exit , a la que se reduce la declaración C # lock
. Eso significa que no puede hacer el equivalente de Monitor. TryEnter , aunque, por supuesto, el paquete java.util.concurrent.locks (a partir de 1.5) tiene una variedad de bloqueos que tienen más funciones disponibles.
I java, no tiene que preocuparse por bloquear los tipos públicos que posee.
En .NET, tienes que have to
Actualizado: esto es para los tipos que tienes. Bloquear los tipos públicos que no tienes es malo en cualquier idioma :)