¿Son las propias variables de Java seguras para subprocesos? ¿Al actualizar variables? [duplicar]

Esta pregunta ya tiene una respuesta aquí:

¿Configuración segura para subprocesos de una variable (Java)? 5 respuestas

Supongamos que tengo dos hilos que actualizan un objeto, y un hilo que lee de ese objeto sin sincronización. Obviamente, esta es la condición de ejecución. Sin embargo, me pregunto si la variable en sí solo puede escribirse parcialmente.

public class CommonObject extends Object
{
    static int memberVar=-1;
}

public class Input1Thread extends Thread
{   
    public void run()   
    {
        while(true)
            CommonObject.memberVar = 1
    }
}

public class Input2Thread extends Thread
{   
    public void run()   
    {
        while(true)
            CommonObject.memberVar = 2;
    }
}

public class OutputThread extends Thread
{   
    public void run()   
    {
        while(true)
            System.out.println("CommonObject.memberVar"+ CommonObject.memberVar);
    }
}  

Supongo que el valor impreso también será 2 o 1. Sin embargo, me preguntaba si era posible que la variable estuviera configurada a la mitad.

Usé primitivas como ejemplo, pero me gustaría que la respuesta también fuera para los objetos, si es diferente.

Respuestas a la pregunta(3)

Su respuesta a la pregunta