原先在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类实现相关推荐

  1. java中properties作用,java中Properties类的使用

    java中Properties类的使用 在java.util 包下面有一个类 Properties,该类主要用于读取以项目的配置文件(以.properties结尾的文件和xml文件). Propert ...

  2. 在java中下列描述错误的是_在 JAVA 中 , 关于类的方法 , 下列描述错误的是 ()._学小易找答案...

    [多选题]价值的特性是 [简答题]输入任一字符串,统计其中数字,字母及其它字符个数 .(25分) [填空题]1.产品整体包括哪五个基本层次 2核心层次产品最基本的层次,是产品的_____ [单选题]纸 ...

  3. Java中Properties类的操作

    Java中Properties类的操作 ============================================= com.gordon.constant Constant.java: ...

  4. Java中String类的方法及说明

    String : 字符串类型 一.构造函数      String(byte[ ] bytes):通过byte数组构造字符串对象.      String(char[ ] value):通过char数 ...

  5. java程序中出现两个class,Java中Class类中两个值得注意的进行类型动态转换的方法...

    Java中的Class类有两个重要的方法:cast()和asSubclass().这两个方法都是用于Class类进行运行时(run-time)阶段的类型转换的.下面来看看他们的定义和使用: 第一个方法 ...

  6. Java 中,类、类对象、泛型之间的转换

    Java 中,类.类对象.泛型之间的转换 R 为非泛型 获得类 通过类型名来获得类 通过对象来获得类 通过类名字符串来获得类 通过类来获得类名字符串 通过类来获得对象 使用 R 的无参数构造器来创建对 ...

  7. java getabsolutepath,详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别

    简单看一下描述,例子最重要. 1.getPath(): 返回定义时的路径,(就是你写什么路径,他就返回什么路径) 返回绝对路径,但不会处理"."和".."的情况 ...

  8. java中的path类_详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别

    简单看一下描述,例子最重要. 1.getPath(): 返回定义时的路径,(就是你写什么路径,他就返回什么路径) 2.getAbsolutePath(): 返回绝对路径,但不会处理".&qu ...

  9. java中立方根方法_java基础:4、java中Math类的常用方法?

    4.java中Math类的常用方法? Java的Math类封装了很多与数学有关的属性和方法.如下所示: System.out.println("计算平方根--Math.sqrt(81)--  ...

最新文章

  1. 平台允许同时在线人数 显示_糖豆人:终极淘汰赛 热度持续飙升 Steam同时在线人数排名前四...
  2. 组策略 从入门到精通(二) 如何区别跨越WAN网的计算机对组策略的套用
  3. 介绍html CSS和JS的定义或引用
  4. c++ 学习笔记 c++ 引用C库注意点:#ifdef __cplusplus 倒底是什么意思?
  5. 5.Python基础语法(函数/条件控制/循环语句/可迭代对象/迭代器/生成器/对象赋值/浅复制/深复制)
  6. python使用界面-用python编写简单ui界面窗口
  7. python网络爬虫面试题,搞定这套Python爬虫面试题(面试会so easy)
  8. Android控件系列之RadioButtonRadioGroup(转)
  9. 基于mAppWidget实现手绘地图--索引DEMO
  10. 微信也QQ服务器,妄想山海QQ区还是微信区好 平民服务器选择推荐
  11. angular8.x + ngx-translate实现国际化
  12. 视听杂志视听杂志社视听编辑部2022年第6期目录
  13. 华为S5700交换机链路聚合配置
  14. 【帝国CMS】灵动标签SQL调用广告系统里的广告
  15. SAMSUNG,三星,N8000升级
  16. 浏览器打开exe程序
  17. mysql mmm 扩展_Mysql - 高可用方案之MMM(一)
  18. Proteus 8.1 51单片机仿真双人对战五子棋
  19. 「ZBrush」学习ZB出来可以从事什么工作?小白都知道吗?
  20. 前端ECMAScript6个人学习笔记

热门文章

  1. Mac终端指令总结「Unix/Linux区别和联系、终端指令原理、Mac目录结构」
  2. 2021神木四中罗超同学高考成绩查询,2021衡阳市地区高考成绩排名查询,衡阳市高考各高中成绩喜报榜单...
  3. 精读《你不知道的 javascript(上卷)》
  4. 交互界面设计快速原型设计实验报告
  5. Win11年度版本更新了啥?详细剖析Win11 22H2
  6. 快速实现私密的网络日记功能(群晖nas)
  7. 匿名社交小程序惨遭封杀,涉嫌诱导分享?
  8. 如何熟悉一个完全陌生的系统
  9. 超级计算机天河二号浅析
  10. dvbbs论坛的安装