Java中Queue类实现
原先在java编程中,Queue的实现都是用LinkedList
- Queue queue = new LinkedList();
但正如jdk中所说的那样:
注意,此实现不是同步的。如果多个线程同时访问一个链接列表,而其中至少一个线程从结构上修改了该列表,则它必须 保持外部同步。(结构修改指添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)这一般通过对自然封装该列表的对象进行同步操作来完成
LinkeList显示源码:http://blog.csdn.net/lengyuhong/archive/2010/10/27/5969325.aspx
所以为方便起见,可以直接写一个线程安全的LinkedList实现的Queue类,这段程序原先是由我朋友夏裔编写,我只做了一些小的改动,特此说明
源程序:
- import java.util.LinkedList;
- /***
- * 队列,其中关键的数据结构是LinkedList
- * 为什么不用jdk自带的实现了Queue接口的LinkedList类,而要自己在再写一遍的原因是
- * 注意,此实现不是同步的。如果多个线程同时访问一个链接列表,而其中至少一个线程从结构上修改了该列表,则它必须 保持外部同步。
- * (结构修改指添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)
- * 这一般通过对自然封装该列表的对象进行同步操作来完成
- * 因此,为方便起见,直接写了这个线程同步的Queue对象类
- * @author xiayi and zhujiadun
- * time:2010年10月27日14:34:51
- */
- public class LinkedListQueue<E> {
- private LinkedList<E> list = new LinkedList<E>();
- private int size = 0;
- public synchronized void put(E e) {
- size++;
- list.addLast(e);
- }
- // 使用removeFirst()方法,返回队列中第一个数据,然后将它从队列中删除
- public synchronized E get() {
- size--;
- return list.removeFirst();
- }
- public synchronized boolean empty() {
- boolean flag = false;
- if(size==0){
- flag = true;
- }
- return flag;
- }
- public synchronized int size(){
- return size;
- }
- public synchronized void clear() {
- list.clear();
- size = 0;
- }
- public synchronized E get(int i){
- return list.get(i);
- }
- }
Java中Queue类实现的更多相关文章
- 基础知识(05) -- Java中的类
Java中的类 1.类的概念 2.类中的封装 3.对象的三大特征 4.对象状态 5.类与类之间的关系 ------------------------------------------------- ...
- JAVA中的类和接口
1.类: 类是具有相同属性和方法的一组对象的集合,它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和方法两个主要部分.在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属 ...
- java中Color类的简单总结
java中Color类的简单总结 1.颜色的常识 任何颜色都是由三原色组成(RGB),JAVA中支持224为彩色,即红绿蓝分量取值 介于0-255之间(8位表示) 2.Color类中的常量 publi ...
- Java中String类的方法及说明
String : 字符串类型 一. String sc_sub = new String(c,3,2); // String sb_copy = new String(sb) ...
- java中的类和对象
Java中的类是一个模板,它用于描述一类对象的行为和状态. 对象则是类中的一个实例,对象有状态(属性)和行为(方法).例如一条狗就是一个对象,他的状态就是他的颜色,名字,品种:他的行为就是叫,摇尾巴, ...
- java中String类学习
java中String类的相关操作如下: (1)初始化:例如,String s = “abc”; (2)length:返回字符串的长度. (3)charAT:字符操作,按照索引值获得字符串中的指定字符 ...
- 【JAVA零基础入门系列】Day11 Java中的类和对象
今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征 ...
- 在java中String类为什么要设计成final
在java中String类为什么要设计成final? - 胖胖的回答 - 知乎 https://www.zhihu.com/question/31345592/answer/114126087
- 关于Java中基类构造器的调用问题
在<Java编程思想>第7章复用类中有这样一段话,值得深思.当子类继承了父类时,就涉及到了基类和导出类(子类)这两个类.从外部来看,导出类就像是一个与基类具有相同接口的新类,或许还会有一些 ...
随机推荐
- Oracle数据库导出
一. pl/SQL方式 1.打开plsql,找到工具栏,导出表
- [转] C#中发送消息给指定的窗口,以及接收消息
原文C#中发送消息给指定的窗口,以及接收消息 public class Note { //声明 API 函数 [DllImport("User32.dll", EntryPoint ...
- 接入脚本interface.php实现代码
承接上文的WeChatCallBack 在WeChatCallBack类的成员变量中定义了各种消息都会有的字段,这些字段在init函数中赋值.同时也把解析到的XML对象作为这个类的成员变量$_post ...
- redo buffer大小
转载自http://blog.csdn.net/robinson1988/article/details/4729858 log buffer 是SGA中一块循环使用的内存区域,它一般很小,因为有4个 ...
- 1.3……Eclipse下开发Android相关知识
Android应用目录结构 src -------------------------------------------java原代码存放目录 gen ----------------------- ...
- CSS Sprite的优缺点分析
目前大多数的开发人员对这个技术都有相当地掌握,也有很多关于它的教程和文章.几乎所有的文章中都宣称设计师和开发人员都应该使用 CSS sprite 来减少 HTTP 请求数,并且节省一些流量.这个技术被 ...
- delphi 单例模式实现
unit Unit2; interface uses System.SysUtils; type { TSingle } TSingle = class(TObject) private FStr: ...
- Unity3D中的Shader
简单的说,Shader是为渲染管线中的特定处理阶段提供算法的一段代码.Shader是伴随着可编程渲染管线出现的,从而可以对渲染过程加以控制. 1. Unity提供了很多内建的Shader,这些可以从官 ...
- node-sqlserver :微软发布的 SQL Server 的 Node.js 驱动
node-sqlserver 是微软官方发布的 SQL Server 的 Node.js 的驱动程序.可允许 Windows 上运行的 Node.js 程序访问 SQL Server 和 Window ...
- 现代程序设计homework-06
现代程序设计homework-06 1) 把程序编译通过, 跑起来. 加入了倒退的功能,程序已经能跑起来了(见代码). 不过倒退功能有些bug,不过这是由于原本程序的主逻辑就有点问题(对于不可走的格子 ...