¿Existen diferencias entre & # 8220; sincronizado & # 8221; de Java? y C # 's & # 8220; lock & # 8221 ;?

StackOverflow https://stackoverflow.com/questions/217707

  •  03-07-2019
  •  | 
  •  

Pregunta

¿Estas dos palabras clave tienen exactamente el mismo efecto, o hay algo que debería tener en cuenta?

¿Fue útil?

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 :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top