서로 다른 스레드에서 액세스 할 수있는 두 개의 변수 var1
및 var2
이있는 스레드 클래스가 있습니다. var2
을 사용하여 synchronized
getter and setter를 사용하는 경우 volatile
var1
을 사용하는 것과 같습니다.휘발성 변수 및 동기 setter 및 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은 final이 아닌 public boolean입니다. 위 코드가 실제 코드인지 또는 예제를 보여줄지는 확실하지 않지만 아마도 나쁜 소식 일 것입니다. – imrichardcole