3.你真的知道线程间是如何通信的么?
线程启动后,它会在自己独有的栈空间里面运行,但是实际上,两个线程之间是会相互通信的,因为只有这样才能使线程间更加灵活,是资源使用的更加充分。
volatile 和synchronized 关键字
volatile 关键字
首先:volatile 存在的意义就是保证共享变量的可见性。
什么叫做可见性呢?
可见性体现在:两个线程对同一个共享变量进行操作,其中一个线程对其修改,另外一个线程是看不到这个变化的。
为什么会出现这个原因呢?
这个是由于jvm内存模型决定的,内存模型分为共享区域和线程私有区域,线程启动后会把共享区域的变量作为副本存到自己内部,所以当线程修改变量时,知识对自己生效,其他线程并不会感知到,看下图:
volatile 怎么解决可见性的问题呢?
当对volatile 修饰的变量进行修改时,会将当前改变刷新到共享区域,并且使其他存有该变量的线程访问的内存地址失效,重新到共享区域获取该
共有 0 条评论