ThreadLocal、Volatile、synchronized、Atomic的区别
于Volatile关键字具有可见性,但不具有操作的原子性,而synchronized比volatile对资源的消耗稍微大点,但可以保证变量操作的原子性,保证变量的一致性,最佳实践则是二者结合一起使用。
1、对于synchronized的出现,是解决多线程资源共享的问题,同步机制采用了“以时间换空间”的方式:访问串行化,对象共享化。同步机制是提供一份变量,让所有线程都可以访问。
2、对于Atomic的出现,是通过原子操作指令+Lock-Free完成,从而实现非阻塞式的并发问题。
3、对于Volatile,为多线程资源共享问题解决了部分需求,在非依赖自身的操作的情况下,对变量的改变将对任何线程可见。
4、对于ThreadLocal的出现,并不是解决多线程资源共享的问题,而是用来提供线程内的局部变量,省去参数传递这个不必要的麻烦,ThreadLocal采用了“以空间换时间”的方式:访问并行化,对象独享化。ThreadLocal是为每一个线程都提供了一份独有的变量,各个线程互不影响。
Android App的设计架构:MVC,MVP,MVVM与架构经验谈
Java多线程之生产者消费者经典问题
synchronized 方法,while循环条件,wait/notify方法
DDMS和TraceView区别
DDMS是一个程序执行查看器,在里面可以看见线程和堆栈等信息
TraceView是程序性能分析器
Dalvik和ART区别 文一
Dalvik和ART区别 文二
代理模式 vs. 装饰模式
装饰设计模式,使用一种对客户端透明的方式来动态地扩展对象的功能,也是继承关系的一种替代方案。动态地给一个对象增加一些额外的职责。就增加功能来说,装饰模式比生成子类更为灵活。
比如Context,ContextImpl, ContextWrapper之间就是采用装饰模式
生产者和消费者问题
1.http://blog.csdn.net/thinkpadshi/article/details/8163751
2.http://blog.csdn.net/monkey_d_meng/article/details/6251879