美文网首页
2018-09-13 android 笔记

2018-09-13 android 笔记

作者: 章鱼 | 来源:发表于2018-09-13 10:44 被阅读10次

    SQLiteOpenHelper

    • 管理的是一个数据库,而不是一个表
      此数据库可管理多个表,构造函数的版本号也是数据库版本号,不是表版本号哇
    • onCreate和onUpgrade何时调用:
      注意不是对象构造时,而是调用getReadableDatabase / getWriteableDatabase时,具体参考 getDatabaseLocked,其中包含onCreate和onUpgrade调用

    并发概念

    • 原子性
      原子操作,指操作期间cpu不切换线程上下文
    • 可见性
      多线程下,每个子线程的有自己的数据缓存,数据改变仅发生在线程缓存空间,其它线程是看不到的,只有经过同步处理,数据才会回写到主存,并更新到其它线程的缓存中

    synchronized 和 volatile

    • synchronized
      在JVM内部,为了提高效率,同时运行的每个线程都会有它正在处理的数据的缓存副本,当我们使用synchronzied进行同步的时候,真正被同步的是在不同线程中表示被锁定对象的内存块(副本数据会保持和主内存的同步,现在知道为什么要用同步这个词汇了吧),简单的说就是在同步块或同步方法执行完后,对被锁定的对象做的任何修改要在释放锁之前写回到主内存中;在进入同步块得到锁之后,被锁定对象的数据是从主内存中读出来的,持有锁的线程的数据副本一定和主内存中的数据视图是同步的

    • volatile
      volatile关键字是一种简单的同步的处理机制,因为被volatile修饰的变量遵循以下规则:

      • 变量的值在使用之前总会从主内存中再读取出来。
      • 对变量值的修改总会在完成之后写回到主内存中。

      但只有修改时不依赖当前状态(读取时的值)的变量才应该声明为volatile变量

    并发数据结构

    • 并发Map
      ConcourrentMap 接口在Map接口基础上增加了3个原子操作方法
      ConcourrentHashMap 是ConcourrentMap的实现类,内部分为16块分别加锁
    • 并发集合类的使用
      并发集合类ConcourrentHashMap和CopyOnWriteArrayList,他们在多线程环境下能保证自身状态的一致性,但使用时,依然需要再外加同步锁,因为写操作可能依赖之前的状态

    相关文章

      网友评论

          本文标题:2018-09-13 android 笔记

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