Android
文章平均质量分 54
tencent_hw
hello world
展开
-
源码分析:SparseArray分析
需要解析的代码。原创 2016-08-16 21:56:24 · 199 阅读 · 0 评论 -
Java多线程系列9(CountDownLatch)
1 CounDownLatch介绍CountDownLatch是java 1.5新引入的一个同步工具类,常用场景为:一个(或者多个)线程等待另外N个线程完成某个事情之后才能执行。是一个非常有用的线程同步类。 其API有://递减锁存器的计数值,如果计数达到0,就释放所有等待的线程。如果计数大于0,计数减1public void countDown()//等待锁存器的计数值减为0public原创 2017-07-31 00:28:31 · 330 阅读 · 0 评论 -
Java多线程系列2(守护线程)
1 用户线程和守护线程 Java虚拟机中,有两种线程:用户线程(User Thread)和守护线程(Daemon Thread)。 平时我们编写代码中的main函数所在的线程一般就是用户线程。 守护线程是相对于用户线程而言的。守护线程的优先级低于用户线程。 用户线程和守护线程的区别是: (1)守护线程在调用start()运行之前,要调用setDaemon(true)才可以设置为原创 2017-07-29 21:37:07 · 208 阅读 · 0 评论 -
Java 容器与并发
List ArrayList LinkedList CopyOnWriteArrayListMap HashMap LinkedHashMap WeakHashMap IdentityHashMap ConcurrentHashMap ConcurrentSkipListMap NavigableMap Tree原创 2017-08-08 19:25:25 · 306 阅读 · 0 评论 -
注解:编译注解
待写原创 2017-08-08 19:30:22 · 246 阅读 · 0 评论 -
Java多线程系列10(CAS)
1 CAS原理CAS(Compare And Swap)翻译过来就是:比较和交换。 CAS操作涉及三个操作数: 内存值V,旧的预期值A,要修改的新值B。只有当旧的预期值A和内存值V相等的时,将内存值修改为B,否则一直尝试,直到条件满足。 CAS由硬件特性实现,这些指令允许执行读-修改-写操作。即便有其他线程在同时修改变量,也不用担心。因为如果其他线程改变变量,CAS会检测到改变,重新从内存中读取原创 2017-08-01 23:23:44 · 262 阅读 · 0 评论 -
源码分析:SharedPreferences实现
startLoadFromDisk启动一个线程,线程调用loadFromDiskLocked(),这个方法首先检测.bak文件是否存在,如果存在就更名为非.bak结尾的文件。然后检测这个文件是否可读:如果可读,读取XML文件的键值对,并保存到Map中。读取完毕以后,调用notifyAll,看到这个,我们马上就会想到wait。看看wait在哪里?原创 2017-07-30 12:03:26 · 463 阅读 · 0 评论 -
Android进阶系列之1:数据库加密
待写原创 2017-08-01 22:49:43 · 216 阅读 · 0 评论 -
Android进阶系列之3:IntentService
1 IntentService有什么优势和限制?考虑一个场景:在 Android中点击一个按钮下载一个文件。 常规实现一般都是如此:启动一个Activity,Activity中放置一个按钮,点击按钮,启动一个Service来下载文件。由于UI线程不能进行耗时操作。而Service默认运行在UI线程,所以Service中必须启动一个Thread来下载文件。文件下载完毕以后,我们还需要在手动或者自动的原创 2017-08-13 15:49:05 · 324 阅读 · 0 评论 -
Java多线程系列8(Atomic)
待写原创 2017-07-31 00:26:49 · 232 阅读 · 0 评论 -
Java多线程系列7(Condition)
待写原创 2017-07-31 00:25:14 · 193 阅读 · 0 评论 -
源码分析:MultiDex实现原理分析
需要解析的代码。原创 2016-08-16 22:11:26 · 254 阅读 · 0 评论 -
源码分析1:Android的LruCache类分析
目前Android缓存实现方案大多会用到LruCache和DiskLruCache,这两个类的使用非常简单,但是如果深入底层去问大家几个问题:1)LruCache的底层实现是怎样的?2) LruCache是否线程安全?3) LRU算法具体是一个什么算法?4) 实际使用的时候为什么必须重写sizeOf方法?这几个问题,相信会难倒很多人。要回答这些问题,还是必须深入代码层去分原创 2016-08-15 19:13:39 · 270 阅读 · 0 评论 -
源码分析:ConcurrentHashMap实现分析
需要分析的代码。原创 2016-08-18 18:57:41 · 240 阅读 · 0 评论 -
xUtils源码分析系列1
待分析原创 2017-07-29 21:57:52 · 177 阅读 · 0 评论 -
Java多线程系列3(线程同步)
1 为什么要线程同步竞态条件:如果计算的结果取决于多个线程的执行顺序,那么就会发生金态条件。常见的竞态条件是:先检测后执行,执行依赖于检测的结果。检测的结果又依赖于线程实际的执行顺序,这样,就可能出现顺序不一样时,检测的结果不一样,从而导致执行结果不一样。 多线程访问同一个资源,如果出现竞态条件,结果就不是确定的,此时就需要考虑线程同步。2 多线程出错例子看一下下面这个例子:多个线程对同一个变量执原创 2017-07-29 22:39:13 · 286 阅读 · 0 评论 -
Java多线程系列4(wait/notify/notifyAll)
waitnotifynotifyAll实现生产者消费者模型1 wait/notify/notifyAll这三个方法是在java.lang.Object类提供的,使用的时候需要注意: (1)这三个方法需要在synchronized方法或者同步快中调用; (2)调用wait/notify/notifyAll的对象必须和synchronized对应的对象一致。也即如果synchronized(var原创 2017-07-30 11:09:14 · 379 阅读 · 0 评论 -
Java多线程系列5(synchronized)
待写原创 2017-07-31 00:23:02 · 216 阅读 · 0 评论 -
Java多线程系列6(Lock)
待写原创 2017-07-31 00:24:05 · 244 阅读 · 0 评论 -
Android进阶系列之2:HandlerThread详解
1 HandlerThread介绍HandlerThread的本质其实就是Thread封装了Looper。默认情况下,开启一个新的线程时,不会有Looper循环。HandlerThread带个我们的功能是:当开启一个新的线程时,默认帮我们建立好消息循环。方便我们的使用。2 HandlerThread使用例子public class MyActivity extends Activity {原创 2017-08-13 14:38:03 · 254 阅读 · 0 评论