¿Estas dos palabras clave tienen exactamente el mismo efecto, o hay algo que deba tener en cuenta?¿Hay alguna diferencia entre el "bloqueo" de Java y el "bloqueo" de C#?
Respuesta
De acuerdo con este sitio: http://en.csharp-online.net/CSharp_FAQ:_What_is_the_difference_between_CSharp_lock_and_Java_synchronized, C# y Java lock
synchronized
bloques de código son "semánticamente idénticos", mientras que para los métodos, Java utiliza synchronized
mientras que C# utiliza un atributo: [MethodImpl(MethodImplOptions.Synchronized)]
.
Una diferencia interesante no cubierto en el enlace publicado por Keeg: por lo que yo sepa, no hay ningún método equivalente llama en Java para .NET de Monitor.Enter y Monitor.Exit, que la declaración de C# lock
se reduce a. Eso significa que tampoco puede hacer el equivalente a 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 el bloqueo de los tipos públicos que posee.
En .NET, have to
Actualizado: esto es para tipos que le pertenecen. Bloquear en tipos públicos que no le pertenecen es malo en cualquier idioma :)
No, todavía es una mala idea bloquear las referencias públicas en Java también. ¿Qué te hace pensar que está bien en Java? –
Si bien es un enlace interesante, de manera absoluta (y explícita) no se trata el tema del bloqueo de tipos públicos. Lo cual estoy de acuerdo en que no debes hacer ... es una pena que así lo haga [MethodImpl] ... –
encerrar algo público y esperar a que un idiota también lo bloquee. –
- 1. Diferencia entre bloqueo (taquilla) y bloqueo (variable_which_I_am_uso)
- 2. Diferencia entre monitor y bloqueo?
- 3. ¿Diferencia entre el bloqueo sincronizado y el reentrante?
- 4. ¿Qué es un servidor web de bloqueo y de no bloqueo? ¿Qué diferencia hay entre ambos?
- 5. ¿Cuál es la diferencia entre el bloqueo con síncrono, sin bloqueo y asíncrono?
- 6. Diferencia entre el bloqueo (esto) y un bloqueo en el objeto estático
- 7. Diferencia entre bloque y bloqueo en Ruby
- 8. bloqueo en el interior de bloqueo
- 9. ¿Hay un OutputStream en el bloqueo de Java? (Sockets)
- 10. ¿Cuál es la diferencia entre un bloqueo exclusivo y un bloqueo compartido?
- 11. Bloqueo de archivos Java
- 12. bloqueo de subproceso Java
- 13. ¿Hay alguna diferencia entre CPython y Python
- 14. ¿Cuál es la diferencia entre bloqueo y Mutex?
- 15. Archivo de bloqueo y eliminación
- 16. Cola concurrente y de bloqueo en Java
- 17. ¿Existe una relación entre el tamaño del objeto y el rendimiento de bloqueo en Java?
- 18. ¿Hay alguna diferencia efectiva entre el operador get y defineProperty?
- 19. ¿Hay alguna diferencia entre SqlConnection.CreateCommand y el nuevo SqlCommand?
- 20. ¿Hay alguna diferencia entre comillas simples y dobles en Java?
- 21. ¿Hay alguna diferencia entre x ++ y ++ x en java?
- 22. Java doble bloqueo bloqueado
- 23. ¿Hay alguna diferencia entre log4net.Config.BasicConfigurator.Configure() y log4net.Config.XmlConfigurator.Configure()?
- 24. ¿Hay alguna diferencia entre gluLookAt() y glFrustum()?
- 25. bloqueo gama en java
- 26. ¿Hay alguna diferencia entre SSLv3 y TLS1.0?
- 27. ¿Hay alguna diferencia entre DataTable.Clear y DataTable.Rows.Clear?
- 28. ¿Hay alguna diferencia entre System.Windows.Clipboard y System.Windows.Forms.Clipboard?
- 29. ¿Hay alguna diferencia entre is_int() y ctype_digit()?
- 30. ¿hay alguna diferencia entre [Serializable] y [Serializable()] en C#?
No, "semánticamente idéntico" es lo que necesitaba escuchar ... y si hubo algún "truco", pero esa página parece ser bastante claro. Gracias. Stackoverflow es mi nuevo Google. ;) – Epaga