Android开源框架:Universal-Image-Loader解析(四)TaskProcess
Universal-Image-Loader中,对Task的处理有两种方法:FIFO,LIFO
在core/assist下的deque包中,其主要是定义了LIFOLinkedBlockingDeque,其他的几个均在java.util和java.util.concurr中
aaarticlea/png;base64,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" alt="" />
下面我们对queue和deque及其相关的类撸一撸,看看它们的区别
1. Queue:队列, 继承于Collection,定义了几个与队列相关的方法
2. Deque:双向队列,继承于Queue,定义了和双向操作相关的方法
3. BlockingQueue:阻塞队列
4. BlockingDeque:双向阻塞队列
5. AbstractQueue: 实现了队列的几个基本方法,
6. LinkedBlockingQueue:线程安全,阻塞队列,默认长度是Integer.MAX_VALUE
按 FIFO(先进先出)排序元素。队列的头部 是在队列中时间最长的元素。队列的尾部 是在队列中时间最短的元素。 链接队列的吞吐量通常要高于基于数组的队列。
/**
* Linked list node class,单向的列表
*/
static class Node<E> {
E item;
/**
* One of:
* - the real successor Node
* - this Node, meaning the successor is head.next
* - null, meaning there is no successor (this is the last node)
*/ Node<E> next;
Node(E x) { item = x; }
}
7. LinkedBlockingDeque:线程安全,双向阻塞队列,其实现主要是基于两个Node,默认长度是Integer.MAX_VALUE
/** Doubly-linked list node class 双向链表*/
static final class Node<E> {
/**
* The item, or null if this node has been removed.
*/
E item; /**
* One of:
* - the real predecessor Node
* - this Node, meaning the predecessor is tail
* - null, meaning there is no predecessor
*/
Node<E> prev; /**
* One of:
* - the real successor Node
* - this Node, meaning the successor is head
* - null, meaning there is no successor
*/
Node<E> next; Node(E x) {
item = x;
}
} /**
* Pointer to first node.头节点
* Invariant: (first == null && last == null) ||
* (first.prev == null && first.item != null)
*/
transient Node<E> first; /**
* Pointer to last node.尾节点
* Invariant: (first == null && last == null) ||
* (last.next == null && last.item != null)
*/
transient Node<E> last;
8. LIFOLinkedBlockingDeque:后进先出,双向阻塞队列,仅仅override两个方法
@Override
public boolean offer(T e) {
return super.offerFirst(e);
} /**
* Retrieves and removes the first element of this deque. This method differs from {@link #pollFirst pollFirst} only
* in that it throws an exception if this deque is empty.
*
* @return the head of this deque
* @throws NoSuchElementException
* if this deque is empty
*/
@Override
public T remove() {
return super.removeFirst();
}
阻塞队列的工作原理:一个线程(生产者)放入任务,另外一个线程(消费者)取出任务
上图参考链接:http://www.cnblogs.com/qiengo/archive/2012/12/19/2824971.html
Android开源框架:Universal-Image-Loader解析(四)TaskProcess的更多相关文章
- Android开源库--Universal Image Loader通用图片加载器
如果说我比别人看得更远些,那是因为我站在了巨人的肩上. github地址:https://github.com/nostra13/Android-Universal-Image-Loader 介绍 ...
- Android 开源框架Universal-Image-Loader完全解析(三)---源代码解读
转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/39057201),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...
- Android 开源框架Universal-Image-Loader完全解析(二)--- 图片缓存策略详解
转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...
- Android 开源框架Universal-Image-Loader全然解析(二)--- 图片缓存策略具体解释
转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...
- [转]Android开源框架ImageLoader的完美例子
Android开源框架ImageLoader的完美例子 2013年8月19日开源框架之Universal_Image_Loader学习 很多人都在讨论如何让图片能在异步加载更加流畅,可以显示大量图片, ...
- Android 开源框架Universal-Image-Loader学习
Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用 Android 开源框架Universal-Image-Loader完全解析(二)--- 图片 ...
- 值得推荐的android开源框架
1.volley 项目地址https://github.com/smanikandan14/Volley-demo (1) JSON,图像等的异步下载: (2) 网络请求的排序(scheduling) ...
- 6个值得推荐的Android开源框架简介(转)
虽然我们在做app的时候并不一定用到框架,但是一些好框架的思想是非常有学习价值的 1.volley 项目地址 https://github.com/smanikandan14/Volley-demo ...
- android开源框架
1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1) JSON,图像等的异步下载: (2) 网络请求的排序(scheduli ...
- android 开源框架推荐
同事整理的 android 开源框架,个个都堪称经典.32 个赞! 1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1) JS ...
随机推荐
- 冰球项目日志1-yjw
第一次小组讨论结果 功能需求分析 通过已知输入:球位置速度,击球手位置速度.确定输出:击球手击球时速度,击球点位置,击球手轨迹. 功能分解 1 通过当前的球位置速度,判断是否会进入我方球门,以判断是否 ...
- 什么是UART中的FIFO
FIFO是先进先出缓冲区的意思,即串口接收到的数据可以先进入FIFO,不必马上进入中断服务程序接收,这样可以节省CPU时间.对于发送数据也一样可以把要发送的数据一起写入FIFO,串口控制器按照写入的顺 ...
- LoadRunner脚本参数化设置
LoadRunner,是一种预测系统行为和性能的负载测试工具,其中VUG(Virtual User Generator)主要用于虚拟用户生成和脚本编辑.为了实现单用户多次迭代执行脚本,VUG提供了强大 ...
- web.Config配置数据库的连接
<!--连接字符串设置--> <connectionStrings> <add name="ConnString" connectionString= ...
- Java注释@interface的用法【转】
Java用 @interface Annotation{ } 定义一个注解 @Annotation,一个注解是一个类.@Override,@Deprecated,@SuppressWarnings为 ...
- xampp 端口冲突
最近使用xampp ,提示端口有问题,使用xampp自带的 xampp control修改的端口之后还是不行. 如果是apache端口有问题就修改 xampp\apache\conf\ httpd.c ...
- kali安装后的网络设置
Kali linux 安装完成后,需要对其网络进行配置.使用DHCP服务是配置网卡最简单的方法之一,但渗透测试时通常不会这样做,因为系统会被记录在DHCP服务器的数据库中. 1 动态DHCP方式 配 ...
- 学习PYTHON之路, DAY 6 - PYTHON 基础 6 (模块)
一 安装,导入模块 安装: pip3 install 模块名称 导入: import module from module.xx.xx import xx from module.xx.xx impo ...
- html slelect 标签默认值
<select name="channelCode" id="channelCode" class="all_input" style ...
- Ubuntu 下 kazam 录屏 没声音解决方案
以下内容参考https://www.youtube.com/watch?v=5NZ0qwp2L04,我做了些修改,让它好懂些. 在应用商店里搜索 PulseAudio Volume Control 在 ...