美文网首页
android 同步的常用关键字

android 同步的常用关键字

作者: android源码探索 | 来源:发表于2019-05-23 10:04 被阅读0次

欢迎大家下载我个人开发的app安琪花园

1. 如何在多个线程间共享数据

用全局变量即可实现

2. 如何保证变量可见性

即在子线程里面能实时检测到外层的属性的变化
可能用Sycnizoned, volatile

涉及到相关的概念, java的内存模型

说白了就 是主内存 和工作内存机制, java内存模型产生的线程安全问题
也就 是产生了变量可见性的问题。简单的解决方案就是加同步关键字

那同步关键字是如何实现了变量可见性的问题。如何做到了线程安全

  1. 子内存里面修改后必须立马同步回主内存。
  2. 子内存读取数据的时候 从主内存重新读取一下

java 内存模型里面8种原子操作

lock 作用于主内存的变量,把一个变量标识为一条线程独占的状态
unlock 作用于主内存的变量,把一个处于锁定状态的变量释放出来。
read 把一个变量的值从主内存传输到工作内存中,以便随后的load使用。
load 把read操作从主内存中得到的变量值放入到工作内存的变量副本中。
use 把工作内存中一个变量的值传递给执行引擎,每当虚拟机遇到一个需要使用变量的值的字节码指令时将会执行这个操作。
assign 把一个从执行引擎中接收到的值赋值给工作内存中的变量,每当虚拟机遇到一个给变量赋值的字节码指令时执行这个操作。
store 把工作内存中的一个变量的值传递到主内存,以便随后的write使用。
write 把store操作从工作内存中得到的变量值放入到主内存的变量中。

synchronized 如何做到变量可见性的(而且是线程安全的)

  1. 进入同步块时先清空工作内存中的变量,从主内存重新加载
  2. 解锁前先同步回主内存
  3. 锁机制 只有获得锁了以后才能操作共享资源

volatile

  1. 能保证变量的可见性
  2. 不是线程安全的(更新数据后不是立马同步回主存的)
  3. 仅适用于变量
    4、 标记的变量不会被编译器优化

相关文章

  • android 同步的常用关键字

    欢迎大家下载我个人开发的app安琪花园 1. 如何在多个线程间共享数据 2. 如何保证变量可见性 即在子线程里面...

  • JAVA线程锁---Synchronized

    一、同步机制关键字synchronized 最常用的同步机制就是synchronized关键字,能够作用于对象、函...

  • Concurrency: synchronized 字节码

    synchronized 是并发中常用的关键字,用于方法或者是代码的同步,也是常见的面试点 使用javap -ve...

  • java多线程学习(三)

    线程的同步机制 java平台提供的线程同步机制包括锁,volatile关键字、final关键字、static关键字...

  • Android中的多线程

    1. Java多线程基础 Java多线程,线程同步,线程通讯 2. Android常用线程 HandlerThre...

  • 同步和死锁

    同步代码块:synchronized关键字修饰; 同步方法:synchronized关键字修饰; 只有在需要共享资...

  • synchronized / Lock+volatile

    最近在学习单例模式和Android消息传递方面的知识,都用到了synchronized同步关键字,于是整理下思路。...

  • Android之EditText检索Listview,匹配关键字

    需求背景:在android 开发中,我们经常用EditText通过搜索关键字,来查询listview里面的内容,并...

  • Java Synchronized

    Java里最常用的线程同步方式就是synchronized关键字了。查阅了相关资料,加上一些代码的实践,总算对这个...

  • Java编程——从JVM的角度分析Synchronize 关键字

    众所周知 Synchronize 关键字是解决并发问题常用解决方案,有以下三种使用方式: 1、同步普通方法,锁的是...

网友评论

      本文标题:android 同步的常用关键字

      本文链接:https://www.haomeiwen.com/subject/lnamzqtx.html