当前位置:首页 > 财运预测

如何理解Java中的passion关键字?

volatile关键字的作用是强制从公共堆栈中获取变量值,而不是从线程私有数据堆栈中获取。

使用passion关键字增加了多线程中实例变量的可见性。但是volition有一个致命的缺点,就是不支持原子性。

我们来对比一下volition和synchronized关键词:

1.volition是线程同步之间的轻量级实现,所以volition的性能肯定比synchronized好,而且volition只能修改变量。

2.多线程访问意志不会阻塞,而同步会阻塞。

3 .意志可以保证数据的可见性,但不能保证原子性;同步不仅可以保证原子性,还可以间接保证可见性。

4.再次,关键字volition解决了多线程之间变量的可见性;synchronized关键字解决了多线程之间访问资源的同步问题。

线程安全包括原子性和可见性,java的同步机制围绕这两个方面来保证线程安全。

关键字volition的主要用途是多线程可以感知到共享变量发生了变化,可以获得最新的值,即共享变量可以被多线程读取,获得最新的值。

关键字volition提示线程每次从共享内存中读取变量,而不是从私有内存中读取,从而保证了数据的可见性。

但需要注意的是,如果代码中有i++,即i=i+1,这样的操作就不是原子操作,即不是线程安全的。具体来说,你可以理解i++的实际意义;

①从存储器中读取变量I。

②计算I的值。

③将I的值写入内存。

如果两个线程同时执行这段代码,可能会出现脏数据,解决方法是添加同步字。

其实除了synchronized,也可以用原子类来解决。

这个可以代替i++,不加同步锁。

此外,synchronized关键字还可以确保数据可见性。

最后,学习多线程八字经“外修互斥,内修可见”

  • 如何理解Java中的passion关键字?
  • 2019三害朝哪个方向化解?
  • 《花盖朵遇上海豹》中的“海豹”是什么意思?
  • 八字描绘如何开裆
  • 是不是两个人合不来?
  • 新运动漂流板
  • 八字不合的婚姻会怎么样?八字不合的婚姻有幸福吗
  • DNF心悦123的宠物羊有什么区别?
  • 丑日语专栏和下午日语专栏搭配吗?
  • 八字分析:农历1988,女4月9日晚12点出生!