我还没有完全理解synchronized和volatile的区别。
我知道线程可以安全地在本地进行更改。从我迄今所读的内容来看,synchronized > volatile。
假设我有一个参数,它不是long或double,而是一个标准的整数(没有原子性)。
我有一个同步方法,在这个方法中我对这个整数进行了很多操作。所有线程都会得到这个整数的更新版本吗?还是我也必须声明它为volatile?
public class stackoverflow {
private int x = 0;
public synchronized void rechnen(){
//dosomething
}
}
基本上,在 rechnen() 完成后,如果我有 10000 个线程,它们都会得到 x 的更新版本,因为我的方法是同步的吗?还是我也必须声明它为 volatile?