Sé que usar la palabra clave synchronize antes de que un método proporcione sincronización a ese objeto.
Es decir, 2 hilos que ejecutan la misma instancia del objeto se sincronizarán.
Sin embargo, dado que la sincronización está en el nivel del objeto, 2 hilos que ejecutan instancias diferentes del objeto no se sincronizarán. Entonces, si tenemos una variable estática en una clase java que es llamada por el método, nos gustaría sincronizarla entre las instancias de la clase.
Las dos instancias se ejecutan en 2 subprocesos diferentes.
¿Podemos lograr la sincronización de la siguiente manera?¿Cómo sincronizar una variable estática entre hilos que ejecutan instancias diferentes de una clase en java?
public class Test { private static int count = 0; private static final Object lock= new Object(); public synchronized void foo() { synchronized(lock) { count++; } } }
¿Es cierto que ya hemos definido 'bloquear' un objeto que es estático y estamos usando la palabra clave sincronizada para que el bloqueo, el recuento varibale estática se ha sincronizado a través de las instancias de la clase de prueba?
¿Puedes formatear tu código poniendo pre alrededor o algo así? –
sí.(Límite de 15 caracteres) – Bozho
¡todas estas respuestas son INÚTILES a menos que el objeto de bloqueo se declare FINAL! –