Android艺术开发探索--第二章:IPC机制(下) 我们继续来讲IPC机制,在本篇中你将会学习到 ContentProvider Socket Binder连接池 一.使用ContentProvider ContentProvider是Android中提供的专门用来不同应用之间数据共享的方式,从这一点来看,他天生就是适合进程间通信,和Messenger一样,ContentProvider的底层实现同样也是Binder,由此可见,Binder在Android系统中是何等的重要,虽然Conten…
章节介绍 这一章节主要学习java并发机制的底层实现原理.主要学习volatile.synchronized和原子操作的实现原理.Java中的大部分容器和框架都依赖于此. Java代码 ==经过编译==>Java字节码 ==通过类加载器==>JVM(jvm执行字节码)==转化为汇编指令==>CPU上执行. Java中使用的并发机制依赖于JVM的实现和CPU的指令. volatile初探 volatile是是轻量级的synchronized,它在多处理器开发中保证了共享变量的可见性.可见性…
章节介绍 主要包括 术语定义.处理器如何实现原子操作.Java如何实现原子操作: 原子(atomic)本意是 不能再进一步分割的最小粒子,“原子操作” 意为 不可被中断的一个或一系列操作. 术语定义 自己的理解: 缓存行:缓存的最小操作单位.注意,缓存与内存是不一样的. 比较并交换:结合上一篇中CAS操作的介绍进行理解.CAS操作需要输入两个数值,一个新值A,一个旧值B,在操作期间先比较旧值B有没有发生变化,没有发生变化,才交换,发生了变化,就不交换. CPU流水线:结合生产车间的流水线,一种设…
ThreadA__________     同步 ______________ 异步 ___________     异步 ThreadB__________         ______________ 后台进程 : 程序结束 ,则后台进程随之结束. 多个线程都可能访问,有共享,就要考虑线程安全. Timer : 开启新线程,  timerTask 如果访问程序中的数据,那么该数据的访问需要是线程安全的,简单方法:将线程安全封装在共享数据内部.timer:AtFixed是从上次开始时间算起.不…
章节介绍 本章节主要学习 Java SE 1.6 中为了减少获得锁 和 释放锁 时带来的性能消耗 而引入的偏向锁 和 轻量级锁,以及锁的存储结构 和 升级过程. synchronized实现同步的基础: Java中的每个对象都可以作为锁.具体有三种形式: (1)对于普通同步方法,锁是当前实例对象: (2)对于静态同步方法,锁是当前类的Class对象: (3)对于同步方法快,锁是Synchronized括号中配置的对象. 当一个线程试图访问同步代码块时,它首先必须得到锁,退出或者抛出异常时必须释放…
对于书评这件事情,我其实是不想写的,因为每个人都有自己的一个衡量标准,每个人眼中都有自己的哈姆雷特,是好是坏每个人都褒贬不一.如果对于书中的知识你都掌握了,你只是想把它作为一种知识串联的记忆体的话,那么你可能感兴趣的事整本书的知识框架和体系脉络,所以如果书中的知识具有连贯性,能够在你脑海中编织出你想要的记忆蓝图,那么我相信它对你来说就没那么好:如果你想把它作为打开新世界的大门,你想了解一下并发编程的奥妙,我相信它对你来说也是一本好书,能够拓展你的知识深度:如果你是面向面试来看它,它也是一本好书,…
本文是我翻译<JavaScript Concurrency>书籍的第四章 使用Generators实现惰性计算,该书主要以Promises.Generator.Web workers等技术来讲解JavaScript并发编程方面的实践. 完整书籍翻译地址:https://github.com/yzsunlei/javascript_concurrency_translation .由于能力有限,肯定存在翻译不清楚甚至翻译错误的地方,欢迎朋友们提issue指出,感谢. 惰性计算是一种编程技术,它用…
Java并发机制的底层实现原理 1.volatile volatile相当于轻量级的synchronized,在并发编程中保证数据的可见性,使用 valotile 修饰的变量,其内存模型会增加一个 Lock 前缀,而这个前缀在多核处理器中带来的效果是: (1)会将处理器缓存行的数据回写到内存中: (2)同时这个操作会使其它处理器里缓存了这个内存地址的数据无效: 2.synchronized synchronized是重量级锁,其在JVM实现的原理是基于进入和退出 Monitor 对象来实现同步代…
java并发编程笔记(四)--安全发布对象 发布对象 使一个对象能够被当前范围之外的代码所使用 对象逸出 一种错误的发布.当一个对象还没构造完成时,就使它被其他线程所见 不安全的发布对象 某一个类的构造方法为公共的. 如: public class UnsafePublish { private String[] states = {"a", "b", "c"}; public String[] getStates() { return stat…
Java程序设计(2021春)--第二章课后题(选择题+编程题)答案与详解 目录 Java程序设计(2021春)--第二章课后题(选择题+编程题)答案与详解 第二章选择题 2.1 面向对象方法的特性 T1 题面 答案 详解 T5 题面 答案 详解 2.2-1 类声明与对象创建 2.2-2 数据成员 2.2-3 方法成员 2.2-4 包 2.2-5类的访问控制权限 T3 题面 答案 详解 2.3-1 对象初始化 2.3-2 内存回收 2.4枚举类 T2 题面 答案 详解 第二章编程题 T1 矩阵螺…