kotlin

volatile关键字在Android中到底有什么用?

半城伤御伤魂 提交于 2020-10-14 00:27:01
本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新。 上周六在公众号分享了一篇关于Java volatile关键字的文章,发布之后有朋友在留言里指出,说这个关键字没啥用啊,Android开发又不像服务器那样有那么高的并发,老分享这种知识干啥? 让我意识到有些朋友对于volatile这个关键字的理解还是有误区的。 另外也有朋友留言说,虽然知道volatile关键字的作用,但是想不出在Android开发中具体有什么用途。 所以我准备写篇文章来剖析一下这个关键字,顺便回答一下这些朋友的疑问。 由于这篇文章是我用周日一天时间赶出来的,所以可能不会像平时的文章那样充实,但是对于上述问题我相信还是可以解释清楚的。 对volatile关键字的作用有疑问的同学,可能都不太了解CPU高速缓存这个概念,所以我们先从这个概念讲起。 CPU高速缓存和可见性问题 当一个程序运行的时候,数据是保存在内存当中的,但是执行程序这个工作却是由CPU完成的。那么当CPU正在执行着任务呢,突然需要用到某个数据,它就会从内存中去读取这个数据,得到了数据之后再继续向下执行任务。 这是理论上理想的工作方式,但是却存在着一个问题。我们知道,CPU的发展是遵循摩尔定律的,每18个月左右集成电路上晶体管的数量就可以翻一倍,因此CPU的速度只会变得越来越快。