c# - threads - ¿Hay alguna diferencia entre "sincronizado" de Java y "bloqueo" de C?
synchronization c# (3)
Yo java no tienes que preocuparte por bloquear tipos públicos que posees.
En .NET, tienes que
Actualizado: esto es para los tipos que posee. Bloquear tipos públicos que no le pertenecen es malo en cualquier idioma :)
¿Estas dos palabras clave tienen exactamente el mismo efecto, o hay algo que debería tener en cuenta?
Una diferencia interesante que no se cubre en el enlace publicado por Keeg: hasta donde tengo conocimiento, no hay llamadas a métodos equivalentes en Java para Monitor.Enter y Monitorear.Salida de .NET, al que se reduce la declaración de lock
C #. Eso significa que no puede hacer el equivalente de Monitor.TryEnter tampoco, 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.
Según este sitio: http://en.csharp-online.net/CSharp_FAQ:_What_is_the_difference_between_CSharp_lock_and_Java_synchronized , C # lock
y los bloques de código synchronized
Java son "semánticamente idénticos", mientras que para los métodos, Java usa synchronized
mientras que C # usa un atributo: [MethodImpl(MethodImplOptions.Synchronized)]
.