У меня есть класс потока, который имеет две переменные var1
и var2
, к которым могут обращаться из разных потоков. Можно ли предположить, что использование var2
через synchronized
геттер и сеттер - это то же самое, что и без них volatile
var1
?Неустойчивая переменная и синхронизированный сеттер и getter
public class Processor extends Thread
{
public volatile boolean var1 = false
private boolean var2 = false
synchronized boolean getVar2()
{
return var2;
}
synchronized boolean setVar2 (boolean value)
{
return var2=value;
}
public void run()
{
...
}
}
Просто установка переменной летучими не является заменой для синхронизации, если это то, что вы спрашиваете? – imrichardcole
Какова идея тела этого сеттера? 'return var2 = value;' Это ненормально, поэтому вам нужно знать, чего вы пытаетесь достичь. – weston
Также var1 является не конечным общедоступным логическим, но не уверен, что приведенный выше код является реальным или просто демонстрирует пример, но это, вероятно, плохие новости ... – imrichardcole