Android多线程编程
文章平均质量分 94
介绍java以及android多线程,并发等多线程编程的知识点
刘望舒
腾讯最具价值专家,Android进阶书畅销前三: 《Android进阶指北》《Android进阶解密》《Android进阶之光》 作者 ,连续5年蝉联电子工业出版社年度优秀作者。国内首批Android开发者,10多年开发经验,前华为架构师、独角兽公司技术总监。国内唯一被百度百科收录的Android技术专家,谷歌开发者社区、Droidcon等技术大会特邀讲师,CSDN 2018年度十大博客之星。
展开
-
Java并发编程(七)ConcurrentLinkedQueue的实现原理和源码分析
我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现,本节我们就来研究下ConcurrentLinkedQueue是如何保证线程安全的同时又能高效的操作的。。使用阻塞算法的队列可以用原创 2016-08-14 17:21:24 · 8233 阅读 · 0 评论 -
Java并发编程(六)阻塞队列
在Android多线程(一)线程池这篇文章时,当我们要创建ThreadPoolExecutor的时候需要传进来一个类型为BlockingQueue的参数,它就是阻塞队列,在这一篇文章里我们会介绍阻塞队列的定义、种类、实现原理以及应用。原创 2016-07-31 11:09:27 · 14314 阅读 · 3 评论 -
Java并发编程(四)Java内存模型
此前我们讲到了线程、同步以及volatile关键字,对于Java的并发编程我们有必要了解下Java的内存模型,因为Java线程之间的通信对于工程师来言是完全透明的,内存可见性问题很容易使工程师们觉得困惑,这篇文章我们来主要的讲下Java内存模型的相关概念。原创 2016-05-29 10:39:11 · 7783 阅读 · 0 评论 -
Java并发编程(五)ConcurrentHashMap的实现原理和源码分析
在Java1.5中,并发编程大师Doug Lea给我们带来了concurrent包,而该包中提供的ConcurrentHashMap是线程安全并且高效的HashMap,本节我们就来研究下ConcurrentHashMap是如何保证线程安全的同时又能高效的操作。原创 2016-07-21 11:12:28 · 12568 阅读 · 5 评论 -
Java并发编程(三)volatile域
有时仅仅为了读写一个或者两个实例域就使用同步的话,显得开销过大,volatile关键字为实例域的同步访问提供了免锁的机制。如果声明一个域为volatile,那么编译器和虚拟机就知道该域是可能被另一个线程并发更新的。再讲到volatile关键字之前我们需要了解一下内存模型的相关概念以及并发编程中的三个特性:原子性,可见性和有序性。原创 2016-02-13 17:48:32 · 10954 阅读 · 3 评论 -
Java并发编程(二)同步
如果你的java基础较弱,或者不大了解java多线程请先看这篇文章java多线程(一)线程定义、状态和属性同步一直是java多线程的难点,在我们做android开发时也很少应用,但这并不是我们不熟悉同步的理由。希望这篇文章能使更多的人能够了解并且应用java的同步。 在多线程的应用总,两个或者两个以上的线程需要共享对同一个数据的存取。如果两个线程存取相同的对象,并且每一个线程都调用了修改该对原创 2015-12-15 14:04:20 · 3626 阅读 · 6 评论 -
Java并发编程(一)线程定义、状态和属性
一 、线程和进程1. 什么是线程和进程的区别: 线程是指程序在执行过程中,能够执行程序代码的一个执行单元。在java语言中,线程有四种状态:运行 、就绪、挂起和结束。 进程是指一段正在执行的程序。而线程有事也被成为轻量级的进程,他得程序执行的最小单元,一个进程可以拥有多个线程,各个线程之间共享程序的内功空间(代码段、数据段和堆空间)及一些进程级的资源(例如打开的文件),但是各个线程都拥原创 2015-10-05 15:30:31 · 10102 阅读 · 0 评论 -
Android多线程(二)AsyncTask源码分析
AsyncTask的基本用法这里就不在赘述了,基本是个安卓开发者就会。1.android 3.0以前的 AsyncTaskprivate static final int CORE_POOL_SIZE = 5; private static final int MAXIMUM_POOL_SIZE = 128; private static final int KEEP_AL原创 2015-04-14 18:45:33 · 4398 阅读 · 0 评论 -
Android多线程(一)线程池
1. new Thread new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 这是最基本的开启线程的方式(实现Runnable接口),我们在初学安卓或者原创 2015-04-09 08:53:54 · 11954 阅读 · 2 评论