
Android并发编程
文章平均质量分 83
阿拉灯神灯
这个作者很懒,什么都没留下…
展开
-
Android并发编程之如何使用ReentrantReadWriteLock替代synchronized来提高程序的效率
Java的synchronized关键字可以帮助我们解决多线程并发的问题,比如我们有一个公共资源,多个线程都来操作这个公共的资源,就会出现并发的问题,比如不同的线程对同一个数据同时进行读和写,肯定会使得每个线程最后拿到的都不是自己所希望拿到的值,为了解决这个问题,我们可以使用synchronized关键字加锁。以前synchronized由于性能消耗太大,在Java SE 1.6对它进行了优化,使得原创 2015-12-16 14:46:03 · 2851 阅读 · 1 评论 -
Android并发编程之白话文详解Future,FutureTask和Callable
说到并发编程,就一定是多个线程并发执行任务。那么并发编程的基础是什么呢?没错那就是Thread了。一个Thread可以执行一个Runnable类型的对象。那么Runnable是什么呢?其实Runnable是一个接口,他只定义了一个方法run(),这个run()方法里就是我们要执行的任务,并且是要被Thread调用的。因此,一个Runnable就可以理解为一个要被执行的任务,而Thread就是一个执原创 2015-11-23 08:19:17 · 14408 阅读 · 6 评论 -
Android并发编程之图文解析volatile关键字
相信很多人对于volatile关键字既熟悉又陌生,熟悉是对这个名字很熟悉,陌生是对他的原理和用法很陌生,最近几天通过查阅大量资料和书,终于对volatile有了一定的理解,写此博客一来做了记录,二来使大家减少学习成本volatile为什么不能保证原子性?现在我们的手机都是多核的,也就是说同时有好几颗CPU在工作,每颗CPU都有自己的Cache高速缓存,因为CPU的速度特别快,而内存的读取操作相对于C原创 2015-11-20 11:28:04 · 9980 阅读 · 13 评论 -
Android并发编程之Handler,MessageQueue,Looper详解
Handler和Looper,MessageQueue之间是什么关系?Looper和MessageQueue是线程中的概念,但是线程默认是没有Looper和MessageQueue的,我们需要手动去设置他们,当一个线程有了Looper和MessageQueue后,就可以关联一个Handler,我们再通过这个Handler,就可以从别的线程中发送消息给这个线程来执行。我们给一个线程配置了Lo原创 2015-11-30 08:37:55 · 2768 阅读 · 5 评论 -
Android并发编程之全方位解析AsyncTask
AsyncTask内部是一个线程池去执行任务的,同一个AsyncTask只能execute()一次,这是为什么呢?我们可以通过一个例子来说明。首先我们先不用AsyncTask,而是开启一个线程池来执行一个任务,我们将这个任务执行3次,线程池会把这个任务分配给3个线程来并发执行此任务,这3个线程操作的是一个共享变量,我们看看会出现什么问题。public class MainActivity原创 2015-12-01 20:17:15 · 2943 阅读 · 3 评论