Являются ли переменные Java сами по себе потокобезопасными? При обновлении переменных? [Дубликат]

На этот вопрос уже есть ответ здесь:

Потокобезопасная установка переменной (Java)? 5 ответов

Предположим, у меня есть два потока, обновляющих объект, и один поток, считывающий этот объект без синхронизации. Очевидно, это условие запуска. Тем не менее, мне интересно, если сама переменная может быть написана только частично.

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);
    }
}  

Я бы предположил, что распечатанное значение также будет либо 2, либо 1. Однако мне было интересно, возможно ли, чтобы переменная была установлена ​​наполовину?

Я использовал примитивы в качестве примера, но я хотел бы, чтобы ответ был также для объектов, если он отличается.

Ответы на вопрос(3)

Ваш ответ на вопрос