Existen varios métodos para lograr la sincronización multiproceso:
conducirá. Esto genera conflictos entre datos inexactos y interferencias mutuas, por lo que se agrega un bloqueo de sincronización para evitar que otros subprocesos llamen al hilo antes de completar la operación, garantizando así la unicidad de la variable y la precisión de la variable.
Método sincronizado
1. Método sincronizado
Es decir, el método modificado utilizando la palabra clave sincronizada.
Dado que cada objeto en Java tiene un bloqueo incorporado, cuando el método se modifica usando esta palabra clave, el bloqueo incorporado protege todo el método. El bloqueo incorporado debe adquirirse antes de llamar al método; de lo contrario, el método se bloqueará.
Código como: public sincronizado void save(){}123
Nota: La palabra clave sincronizada también puede modificar métodos estáticos. En este momento, si se llama al método estático, el se bloqueará toda la clase
2. Bloque de código sincronizado
Es decir, un bloque de declaraciones modificadas por la palabra clave sincronizada. Los bloques de declaración modificados por esta palabra clave se sincronizan automáticamente agregando bloqueos integrados.
3. Sincronización de subprocesos mediante variables de dominio especiales (volatile)
1) La palabra clave volátil proporciona un mecanismo sin bloqueo para acceder a las variables de dominio;
2) Usar volátil para modificar un dominio equivale a decirle a la máquina virtual que el dominio puede ser actualizado por otros subprocesos.
3) Por lo tanto, cada vez que se usa, es necesario volver a calcular el valor del dominio.
3) Entonces, cada vez que lo use, debe volver a calcular el valor del campo en lugar de usar el valor en el registro.
4) volatile no proporciona ninguna operación atómica. y no se puede utilizar para modificar variables de tipo final
4. Sincronización de subprocesos mediante bloqueos reentrantes
En JavaSE 5.0, se agrega un nuevo paquete java.util.concurrent para admitir la sincronización.
La clase ReentrantLock es un bloqueo reentrante mutuamente excluyente que implementa la interfaz Lock. Su comportamiento básico y semántica son los mismos que usar métodos sincronizados y rápidos, y amplía su funcionalidad
5. Sincronización de subprocesos mediante variables locales
Si utiliza una variable administrada por ThreadLocal, cada subproceso que utilice la variable se sincronizará con la variable local. Cada hilo que usa la variable obtendrá una copia de la variable, y estas copias son independientes entre sí, por lo que cada hilo puede modificar su propia copia de la variable a voluntad sin afectar a otros hilos.