Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 14222|Respuesta: 0

[Comunicación] Información sobre los tipos básicos de seguridad de hilos en Java e I++

[Copiar enlace]
Publicado en 5/4/2015 22:17:45 | | |

En Java, las otras variables básicas son atómicas, excepto las variables de 8 bytes y 64 bits de Long y Double.


El modelo de almacenamiento Java requiere que tanto las operaciones get como las de almacenamiento sean atómicas, pero para variables largas y dobles no volátiles, la JVM permite dividir una lectura o escritura de 64 bits en dos operaciones de 32 bits.

Si la lectura y escritura ocurren en hilos diferentes, leer un tipo no volátil largo puede resultar en 32 bits altos de un valor y 32 bits bajos del otro.

Así que, aunque no te importe el uso de datos caducados, puede que no sea seguro usar variables largas y dobles compartidas y mutables en un programa multihilo a menos que se declaren volátiles o estén protegidas con un bloqueo.


Hablando de operaciones atómicas, significa que leer y escribir son atómicos, como i=5; Esto es una operación atómica.

Sin embargo, si la operación de dos átomos se realiza conjuntamente, no es necesariamente atómica, como leer primero y luego escribir, entonces es posible que la variable haya sido modificada tras la lectura.

i++ es una de esas operaciones, primero leer y luego escribir, por lo que la variable entera es atómica, no que i++ sea una operación atómica.

Cuando usas for(int i=0; i<10000; i++){System.out.print(i)}

Verás que al final no imprimiré 10.000, y imprimiré unas 8-9 mil.


Pero en el caso del multihilo, incluso si la variable entera es atómica, puede haber problemas de seguridad en los hilos, que es un problema de visibilidad del hilo, por lo que necesitas añadir una sentencia volátil.

Este modificador es una variable forzada que se lee de memoria cada vez y no se almacena en los registros.




Anterior:SQL 2008 aparece con un mensaje de error (proveedor: SQL Network Interfaces, error: 25 - Palabra de conexión).
Próximo:[Fast and Furious 7] estrena DVD 2.12G. La versión más clara de Internet
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com