Предположим, у меня есть два потока, обновляющих объект, и один поток, читаемый с этого объекта без синхронизации. Очевидно, что это условие запуска. Тем не менее, мне интересно, может ли сама переменная быть только частично написана.Являются ли переменные java сами потоками безопасными? При обновлении переменных?
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. Тем не менее, мне было интересно, если это было возможно, что переменная может быть установлена на полпути?
В качестве примера я использовал примитивы, но я бы хотел, чтобы ответ также касался объектов, если он отличается.
Я думаю, что этот вопрос и ответ лучше. Также они более специфичны для разрыва слова. –