本月博客排行
-
第1名
龙儿筝 -
第2名
lerf -
第3名
fantaxy025025 - johnsmith9th
- xiangjie88
- zysnba
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - wy_19921005
- vipbooks
- benladeng5225
- e_e
- wallimn
- javashop
- ranbuijj
- fantaxy025025
- jickcai
- gengyun12
- zw7534313
- qepwqnp
- 解宜然
- ssydxa219
- zysnba
- sam123456gz
- sichunli_030
- arpenker
- tanling8334
- gaojingsong
- kaizi1992
- xpenxpen
- 龙儿筝
- jh108020
- wiseboyloves
- ganxueyun
- xyuma
- xiangjie88
- wangchen.ily
- Jameslyy
- luxurioust
- lemonhandsome
- mengjichen
- jbosscn
- zxq_2017
- lzyfn123
- nychen2000
- forestqqqq
- wjianwei666
- ajinn
- zhanjia
- Xeden
- hanbaohong
- java-007
- 喧嚣求静
- mwhgJava
- kingwell.leng
最新文章列表
ArrayDeque 源码分析
ArrayDeque不是线程安全的。
ArrayDeque不可以存取null元素,因为系统根据某个位置是否为null来判断元素的存在。
当作为栈使用时,性能比Stack好;当作为队列使用时,性能比LinkedList好。
1. 两个重要的索引:head和tail
// 第一个元素的索引
private transient int head;
// 下个要添加元素的位 ...
QueueDemo
package com.zhoubo.concurrent.collection;
import java.util.LinkedList;
import java.util.Queue;
public class QueueDemo {
Queue<String> queue = new LinkedList<String>();
public Q ...
Lock Free Queue Implementation
One consumer, one producer problem:
Lock Free Queue
Basically add one a separator in a list then nodes between separator and last is owned by consumer, the node between first and separator should be ...
LinkedList源码分析
LinkedList适用于添加、删除比较频繁,随机访问不多的场合。
LinkedList扩展了AbstractSequentialList抽象类(提供了部分List接口的实现),实现了List,Deque,Cloneable,java.io.Serializable接口。
public class LinkedList<E>
extends AbstractSequent ...
队列的链式实现(java)
单链表实现队列,这里采用带头结点的单链表结构。根据单链表的特点,选择链表的头部作为队首,链表的尾部作为队尾。除了链表头结点需要通过一个引用来指向之外,还需要一个对链表尾结点的引用,以方便队列的入队操作的实现。为此一共设置了两个指针,一个队首指针和一个队尾指针,队首指针指向队首元素的前一个结点,即始终指向链表空的头结点,队尾指针指向队列当前队尾元素所在的结点。当队列为空时,队首指针与队尾指针均指 ...
常用数据集合类-Map,Queue,Stack,Collection,List,Set
之前写过一次有关常用数据集合类,但今天简单回顾了一下,发现原来有不少的问题,故就参考了java相关类和接口重新写了!
在除了对原来的Map,Queue,Stack进行修改外,增加了Collection,List,Set三个类,同时增加接口文件四个接口文件:ICollection,IList,IMap,IQueue。他们之间关系参数java相关类。相关代码我放到了GitHub代码仓库里了:ht ...
队列,并非想象的那样简单
经过近两年的时间,我终于写完了这一章。
正如我在Algoxy第一章描述的,Queue并非想象的那样简单。尤其是提供一个纯函数式的队列,并且满足常数时间的头部和尾部操作并不容易。
本章中,我们给出几种不同的队列的纯函数式实现。
当然,用常见的imperative语言实现队列很容易,尤其是使用双向链表。但是这是一个overkill的解法,我们先用单向链表实现一个头部尾部都是常数时间的队列;然后我们给 ...
AbstractQueuedSynchronizer(4)
Condition是一个条件功能的class,必须放在Lock代码块内,如同wait,notify方法放在synchronized块一样。
Condition的(await,signal)与object的(wait,notify)相比,提供了更为通用和灵活的解决方案,可以让多种条件的线程之间相互通信。
Condition的定义:
public interface Condition{ ...
java 队列Queue
队列:先进先出的容器
LinkedList 提供了方法支持队列行为,并且实现了Queue接口,可以向上转型为Queue。
offer()方法是Queue的相关方法之一,在允许情况下,将一个元素插入到对尾,或者返回false。
peek()和element()都将在不移除的情况下返回对头,peek在队列为空时返回null,而element会抛出NoSuchEleme ...
Android消息队列模型——Thread,Handler,Looper,Massage Queue
Android系统的消息队列和消息循环都是针对具体线程的,一个线程可以存在(当然也可以不存在)一个消息队列(Message Queue)和一个消息循环(Looper)。Android中除了UI线程(主线程),创建的工作线程默认是没有消息循环和消息队列的。如果想让该线程具有消息队列和消息循环,并具有消息处理机制,就需要在线程中首先调用Looper.prepare()来创建消息队列,然后调 ...
线程阻塞队列的处理
在日常事务中,我们常常依次做如下操作: 排队取得一个单号; 根据这个单号享有一个操作; 为当前的这个操作买单.
在Android中也一样,为了不阻塞主线程,我们把所有耗时行为都封装为多个线程,有的时候需要先运行线程A,根据得到的结果再运行线程B, 再根据B的结果运行线程C. 时序图如下:
如果我们在ThreadA结束前的代码中插入ThreadB.start, 再ThreadB的结束前的 ...
Java集合的Stack、Queue、Map的遍历
Java集合的Stack、Queue、Map的遍历
在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack、Queue、Map类型的遍历,还是有一些讲究的。
下面是常用的写法:
一、Map的遍历
import java.util.HashMap;
import java.util.Iterator;
...