多线程:volatile

volatile关键字比较少使用,因为: 1:在早前的Java版本中,这个关键字在不同的操作系统中有不同的表现,导致了可移植性比较差。 2:比较难设计,误用较多

每个线程都运行在栈内存中,每个线程都有自己的工作内存(比如寄存器Register,高速缓存器Cache),线程的计算是通过工作内存进行交互的。 多线程:volatile

如何解决不同线程持有的公共资源不同步的状况? 可以使用synchronized方法,也可以使用Lock锁 也可以在一个变量前加入volatile关键字,可以保证每个线程对本地变量的访问和修改都是通过直接与主内存交互完成的,而不是与本线程的工作内存交互的,这样就能保证每个线程都能获得最新鲜的变量值。 多线程:volatile

volatile变量能否保持数据的同步性呢? 两个线程同时修改一个volatile变量能否产生脏数据呢? 答案是肯定的,volatile关键字并不能保证线程的安全性,它只能保证当前线程需要变量值的时候能够获取最新的值。而不能保证多个线程修改的安全性。 在CPU消耗较重时,线程负荷较大,出现单个线程抢占整个CPU的情况,这时就会出现这种volatile线程不安全的情况

转载于:https://my.oschina.net/sudojs/blog/287897