使用装饰者模式实现一个线程安全的Queue队列。

public class SynchronizedQueue<E> implements Queue<E>, Serializable {

private static final long serialVersionUID = -1439242290701194806L;

private final Queue<E> q;

public SynchronizedQueue(Queue<E> q) {
this.q = q;
}

public synchronized boolean add(E e) {
return q.add(e);
}

public synchronized E element() {
return q.element();
}

public synchronized boolean offer(E e) {
return q.offer(e);
}

public synchronized E peek() {
return q.peek();
}

public synchronized E poll() {
return q.poll();
}

public synchronized E remove() {
return q.remove();
}

public synchronized boolean addAll(Collection<? extends E> c) {
return q.addAll(c);
}

public synchronized void clear() {
q.clear();
}

public synchronized boolean contains(Object o) {
return q.contains(o);
}

public synchronized boolean containsAll(Collection<?> c) {
return q.containsAll(c);
}

public synchronized boolean isEmpty() {
return q.isEmpty();
}

public synchronized Iterator<E> iterator() {
return q.iterator();
}

public synchronized boolean remove(Object o) {
return q.remove(o);
}

public synchronized boolean removeAll(Collection<?> c) {
return q.removeAll(c);
}

public synchronized boolean retainAll(Collection<?> c) {
return q.retainAll(c);
}

public synchronized int size() {
return q.size();
}

public synchronized Object[] toArray() {
return q.toArray();
}

public synchronized <T> T[] toArray(T[] a) {
return q.toArray(a);
}

@Override
public synchronized boolean equals(Object obj) {
return q.equals(obj);
}

@Override
public synchronized int hashCode() {
return q.hashCode();
}

@Override
public synchronized String toString() {
return q.toString();
}
}

实现一个线程安全的Queue队列的更多相关文章

  1. 进击的Python【第九章】:paramiko模块、线程与进程、各种线程锁、queue队列、生产者消费者模型

    一.paramiko模块 他是什么东西? paramiko模块是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 先来个实例: import param ...

  2. 源码剖析ThreadPoolExecutor线程池及阻塞队列

    本文章对ThreadPoolExecutor线程池的底层源码进行分析,线程池如何起到了线程复用.又是如何进行维护我们的线程任务的呢?我们直接进入正题: 首先我们看一下ThreadPoolExecuto ...

  3. C++11:基于std::queue和std::mutex构建一个线程安全的队列

    C++11:基于std::queue和std::mutex构建一个线程安全的队列 C++中的模板std::queue提供了一个队列容器,但这个容器并不是线程安全的,如果在多线程环境下使用队列,它是不能 ...

  4. 使用Condition Variables 实现一个线程安全队列

    使用Condition Variables实现一个线程安全队列 测试机: i7-4800MQ .7GHz, logical core, physical core, 8G memory, 256GB ...

  5. Python自动化运维之16、线程、进程、协程、queue队列

    一.线程 1.什么是线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位. 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行 ...

  6. 8.12 day31 进程间通信 Queue队列使用 生产者消费者模型 线程理论 创建及对象属性方法 线程互斥锁 守护线程

    进程补充 进程通信 要想实现进程间通信,可以用管道或者队列 队列比管道更好用(队列自带管道和锁) 管道和队列的共同特点:数据只有一份,取完就没了 无法重复获取用一份数据 队列特点:先进先出 堆栈特点: ...

  7. python并发编程-进程间通信-Queue队列使用-生产者消费者模型-线程理论-创建及对象属性方法-线程互斥锁-守护线程-02

    目录 进程补充 进程通信前言 Queue队列的基本使用 通过Queue队列实现进程间通信(IPC机制) 生产者消费者模型 以做包子买包子为例实现当包子卖完了停止消费行为 线程 什么是线程 为什么要有线 ...

  8. java 线程池线程忙碌且阻塞队列也满了时给一个拒接的详细报告

    线程池线程忙碌且阻塞队列也满了时给一个拒接的详细报告.下面是一个自定义的终止策略类,继承了ThreadPoolExecutor.AbortPolicy类并覆盖了rejectedExecution方法把 ...

  9. Python之路-python(Queue队列、进程、Gevent协程、Select\Poll\Epoll异步IO与事件驱动)

    一.进程: 1.语法 2.进程间通讯 3.进程池 二.Gevent协程 三.Select\Poll\Epoll异步IO与事件驱动 一.进程: 1.语法 简单的启动线程语法 def run(name): ...

随机推荐

  1. SpringMVC源码阅读(二)

    今天分析下ViewResolver和View的实现  下面是ModelAndView的实现 package org.springframework.web.servlet; import java.u ...

  2. 写的一个Makefile

    #========================================================================= # # MAKE FILE FOR ROCKY # ...

  3. 用 Webgoat 撬动地球,看安全测试的引路石!

    测试工程师是很多人迈进软件行业的起点.从负责很小的局部到把握整个产品的质量,每个人花费的时间长短不一--从功能到性能.可用性到容错性.从兼容性到扩展性.稳定性到健壮性--方方面面逐渐做广做深. 不过, ...

  4. android--使用Struts2服务端与android交互

    一,服务器端: web.xml文件: <?xml version="1.0" encoding="UTF-8"?> <web-app vers ...

  5. Bluetooth LE(低功耗蓝牙) - 第五部分

    回顾: 在本系列前面的文章中我们完成了发现BLE传感器并与之建立连接.现在只剩下从其中获取数据了,但是这并没有看起来那么简单.在这篇文章中我们将讨论GATT的特点以及如何促进主机与传感器之间的数据交换 ...

  6. Robotium跨应用处理方法

    相信用过一段时间Robotium的同学一般都遇到过如下情况:界面跳转到被测程序外以后,Robotium就毫无对策了,这也是Instrumentation框架最致命的一个缺点;然而领导是不会管你这些很“ ...

  7. HDU-1963

    http://acm.hdu.edu.cn/showproblem.php?pid=1963 完全背包. 题意:给出初始资金,还有年数,然后给出每个物品的购买价格与每年获得的利益,要求在给出的年份后所 ...

  8. 多台Mac电脑使用一个apple开发者账号

    直接从已安装好的机器上导出私有密钥的,具体方法如下: Xcode的organizer的IPHONE DEVELOPMENT --->Developer Profile里自带的Export和Imp ...

  9. Cogs 1070. [焦作一中2012] 玻璃球游戏 带权并查集,逆序处理

    题目: http://cojs.tk/cogs/problem/problem.php?pid=1070 1070. [焦作一中2012] 玻璃球游戏 ★   输入文件:marbles.in   输出 ...

  10. COM初体验

    以前在我学校里培训过一段时间C++,我敬爱的吴老师略有提及.那个时候觉得COM遥不可及,觉得,哇塞好神圣.我觉得自己啥都没学好,我不应该这么早去涉及这片过于光荣的领地.既没有觉悟也没有动力去迎接这样一 ...