utilizando palabras clave volátiles

Según tengo entendido, si declaramos que una variable es volátil, no se almacenará en la memoria caché local. Cada vez que el hilo está actualizando los valores, se actualiza a la memoria principal. Entonces, otros hilos pueden acceder al valor actualizado.

Pero en el siguiente programa, tanto las variables volátiles como las no volátiles muestran el mismo valor.

La variable volátil no se actualiza para el segundo subproceso. ¿Alguien puede explicar esto por qué testValue no cambia?

class ExampleThread extends Thread {
    private int testValue1;
    private volatile int testValue;
    public ExampleThread(String str){
      super(str);
    }
    public void run() {
    if (getName().equals("Thread 1 "))
    {
        testValue = 10;
        testValue1= 10;
        System.out.println( "Thread 1 testValue1 : " + testValue1);
        System.out.println( "Thread 1 testValue : " + testValue);
    }
    if (getName().equals("Thread 2 "))
    {
        System.out.println( "Thread 2 testValue1 : " + testValue1);
        System.out.println( "Thread 2 testValue : " + testValue);
    }               
}
}

public class VolatileExample {
    public static void main(String args[]) {
        new ExampleThread("Thread 1 ").start();
        new ExampleThread("Thread 2 ").start();
    }
}


output:
Thread 1 testValue1 : 10
Thread 1 testValue : 10
Thread 2 testValue1 : 0
Thread 2 testValue : 0

Respuestas a la pregunta(6)

Su respuesta a la pregunta