Java volatile для параллелизма
Хорошо, так что я только что прочитал этот вопросВы когда-нибудь использовали ключевое слово volatile в Java?и я использую переменную переменную, чтобы остановить цикл. Также я видел эту ссылку,http://www.javamex.com/tutorials/synchronization_volatile.shtml, Теперь в статье говорится, что переменные переменные не являются блокирующими. Также говорится, что его нельзя использовать для параллелизма в последовательности чтения-обновления-записи. Что имеет смысл, потому что они не блокируют.
Поскольку изменчивые переменные никогда не кэшируются, быстрее ли просто использовать синхронизацию, чтобы остановить цикл (из предыдущей ссылки)?
Изменить: Использование синхронизированного решения
public class A{
private boolean test;
public A(){
test = true;
}
public synchronized void stop(){
test = false;
}
public synchronized boolean isTrue(){
return test;
}
}
public class B extends Thread {
private A a;
public B(A refA){
a = refA;
}
public void run(){
//Does stuff here
try{
sleep(1000);
}
catch(Exception e){}
a.stop();
}
public static void main(String [] args){
A TestA = new A();
B TestB = new B(TestA);
TestB.start();
while(TestA.isTrue()){
//stay in loop
System.out.println("still in loop");
}
System.out.println("Done with loop");
}
}