当前位置:  开发笔记 > 编程语言 > 正文

易失性和同步

如何解决《易失性和同步》经验,为你挑选了1个好方法。

我还有一些关于同步和不稳定的东西.

我理解一个线程可以在本地安全地更改.从我到目前为止所读到的是synchronized> volatile.

假设我有一个不长或双的参数,所以基本上是一个标准的整数(没有原子).

我有一个同步方法,我用这个Integer做了很多工作.所有线程都会获得此Integer的更新版本吗?或者我是否必须宣布它是不稳定的?

public class stackoverflow {

    private int x = 0;

    public synchronized void rechnen(){ 
        //dosomething   
    }
}

基本上在rechnen()完成后,我得到了10000个线程,所有都会获得x的更新版本,因为我的方法是同步的?或者我是否必须宣布它是不稳定的?



1> partlov..:

是的,他们将获得更新版本.synchronized保证两件事:变化的可见性和原子性.volatile只是保证变化的可见性.Java保证同步块内的代码不会被优化(通过混合synchronized块内部和外部的命令),因此对于其中的变量的每次更改,在synchronized块结束后对所有线程都是可见的.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有