Android中队列的实现
来源:互联网 发布:tenga淘宝正品 编辑:程序博客网 时间:2024/06/10 14:57
Android提供了队列的支持:
http://developer.android.com/reference/java/util/Queue.html
public interface
Queue
implements Collection<E>java.util.Queue<E>Known Indirect Subclasses
AbstractQueue<E>, ArrayBlockingQueue<E>, ArrayDeque<E>, BlockingDeque<E>, BlockingQueue<E>, ConcurrentLinkedDeque<E>,ConcurrentLinkedQueue<E>, DelayQueue<E extends Delayed>, Deque<E>, LinkedBlockingDeque<E>, LinkedBlockingQueue<E>, LinkedList<E>,LinkedTransferQueue<E>, PriorityBlockingQueue<E>, PriorityQueue<E>, SynchronousQueue<E>, TransferQueue<E>
如果要实现阻塞,可以考虑用BlockingQueue的实现类,
A ConcurrentLinkedQueue
is an appropriate choice when many threads will share access to a common collection.
使用ConcurrentLinkedQueue的一个例子:
- private static final Queue<Object> sWriteQueue =
- new ConcurrentLinkedQueue<Object>();
当要把某个元素入队时:
- private synchronized void write(Object o) {
- //当doWrite()正在进行过程中时,会把sIsWriting置为true
- //当要调用nextWrite()之前把sIsWriting置为false.
- if(sWriteQueue.isEmpty() && !sIsWriting) {
- doWrite(o);
- } else {
- sWriteQueue.add(o);
- }
- }
- private synchronized void nextWrite() {
- if(!sWriteQueue.isEmpty() && !sIsWriting) {
- doWrite(sWriteQueue.poll());
- }
- }
- 当需要处理其中一个元素时:
- @Override
- public void onCharacteristicWrite(BluetoothGatt gatt,
- BluetoothGattCharacteristic characteristic,
- int status) {
- Log.v(TAG, "onCharacteristicWrite: " + status);
- sIsWriting = false;
- nextWrite();
- }
另外,BlockingQueue会针对put(e)以及take(e)提供阻塞机制。
对于以上场景,没有必要阻塞。
0 0
- Android中队列的实现
- Swift中队列的实现
- 数据结构中队列的基本操作实现
- Java中队列实现原理
- c++中线性表中队列的实现
- Java 中队列的使用
- java中队列的使用方法
- java 中队列的使用
- STL中队列的使用
- Java中队列的使用
- java中队列的使用
- Tensorflow中队列的使用
- java中队列的使用
- 项目中队列和实例的体会
- Java 中队列(Queue)的使用
- C++中队列的建立和操作
- C++标准库中队列的应用
- STL 中队列的使用(queue)
- drawRect方法的调用
- 解除ABAP程序编辑锁的方法
- c# 解析和生成 DAE文件
- 设计模式之建造者模式
- Android的Widget桌面应用学习
- Android中队列的实现
- 关于android-async-http 1.4.9的问题
- Java的23种设计模式详解整理之创建型模式
- 介绍VS的各种命令行的意义
- [swift学习之二]基本语法练习
- 杭电oj~~1001
- hive笔记
- 大牛博客源
- Material Design之TabLayout