实现一个线程安全的Queue队列
使用装饰者模式实现一个线程安全的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队列的更多相关文章
- 进击的Python【第九章】:paramiko模块、线程与进程、各种线程锁、queue队列、生产者消费者模型
		
一.paramiko模块 他是什么东西? paramiko模块是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 先来个实例: import param ...
 - 源码剖析ThreadPoolExecutor线程池及阻塞队列
		
本文章对ThreadPoolExecutor线程池的底层源码进行分析,线程池如何起到了线程复用.又是如何进行维护我们的线程任务的呢?我们直接进入正题: 首先我们看一下ThreadPoolExecuto ...
 - C++11:基于std::queue和std::mutex构建一个线程安全的队列
		
C++11:基于std::queue和std::mutex构建一个线程安全的队列 C++中的模板std::queue提供了一个队列容器,但这个容器并不是线程安全的,如果在多线程环境下使用队列,它是不能 ...
 - 使用Condition Variables 实现一个线程安全队列
		
使用Condition Variables实现一个线程安全队列 测试机: i7-4800MQ .7GHz, logical core, physical core, 8G memory, 256GB ...
 - Python自动化运维之16、线程、进程、协程、queue队列
		
一.线程 1.什么是线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位. 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行 ...
 - 8.12 day31 进程间通信 Queue队列使用 生产者消费者模型 线程理论 创建及对象属性方法 线程互斥锁 守护线程
		
进程补充 进程通信 要想实现进程间通信,可以用管道或者队列 队列比管道更好用(队列自带管道和锁) 管道和队列的共同特点:数据只有一份,取完就没了 无法重复获取用一份数据 队列特点:先进先出 堆栈特点: ...
 - python并发编程-进程间通信-Queue队列使用-生产者消费者模型-线程理论-创建及对象属性方法-线程互斥锁-守护线程-02
		
目录 进程补充 进程通信前言 Queue队列的基本使用 通过Queue队列实现进程间通信(IPC机制) 生产者消费者模型 以做包子买包子为例实现当包子卖完了停止消费行为 线程 什么是线程 为什么要有线 ...
 - java 线程池线程忙碌且阻塞队列也满了时给一个拒接的详细报告
		
线程池线程忙碌且阻塞队列也满了时给一个拒接的详细报告.下面是一个自定义的终止策略类,继承了ThreadPoolExecutor.AbortPolicy类并覆盖了rejectedExecution方法把 ...
 - Python之路-python(Queue队列、进程、Gevent协程、Select\Poll\Epoll异步IO与事件驱动)
		
一.进程: 1.语法 2.进程间通讯 3.进程池 二.Gevent协程 三.Select\Poll\Epoll异步IO与事件驱动 一.进程: 1.语法 简单的启动线程语法 def run(name): ...
 
随机推荐
- Welcome to JimmyCheung's blog!
			
博客开通,写写学习笔记,写写心情,写写生活中的点点滴滴~ 有钱的捧个钱场嘞,没钱的贡献个点击量,新鲜的博客出炉咯,来五毛钱的博文呗~ By Jimmy 2014.09.16
 - 随时可以给doT模板传任何你想要的值
			
我以前一直以为只有传给后台的数据才能用doT模板写入, 其实,随时可以把本地处理的数据,仅仅的一个变量,改头换面成一个it关键字下面的属性. 方法就是在tpl中给它赋值. 要注意的是,首先tpl中的属 ...
 - ExecutorService介绍2
			
Thread和ExecutorService的区别 使用Thread,当子线程执行结束后,主线程如果没有其他执行任务,主线程会终止. /** * Created by litao on 15/10/7 ...
 - cloudera安装hadoop集群和相关服务
			
一.软件准备: 1.下载cloudera-manager-installer.bin(安装...-server),cdh4.cm(这是...-agent),另外还有些需要的关联软件下步添加. 2.先建 ...
 - 重构第三天:提升方法&下移方法
			
如果两个子类拥有相同的方法,把它们移动到超类中来 Warning! 但是从子类到父类移动方法的时候要注意, 不要过度采用这种方法,否则会出现继承滥用的情况.如果一个父类A有多个方法,假设m1, m2方 ...
 - ClassNotFoundException
			
在 java socket 通信,使用 ObjectInputStream 的 readObject 时, 出现了问题. ServerProject 问题描述是这样的: java.lang.Class ...
 - 【狼】unity 鼠标拖拽物体实现任意角度自旋转
			
主要涉及函数 Input.GetAxis(“Mouse x”) 可取得鼠标横向(x轴)移动增量 Input.GetAxis(“Mouse y”) 可取得鼠标竖向(y轴)移动增量 通过勾股定理获取拖拽长 ...
 - Eclipse的下载和安装
			
下载 Android开发首选Eclipse for Android Developers版本,里面集成了ADT(Android Development Tools). 下载页面:http://www. ...
 - centos下apache thrift的安装
			
参考:http://running.iteye.com/blog/1983463 thrift-0.9.0安装 最好切换到root用户操作,避免不必要的麻烦. 进行例子程序tutorial目录下,通 ...
 - objective-c保护属性
			
#import <Foundation/Foundation.h> @interface ClassVirable : NSObject{ NSInteger year;//保护树形 } ...