package 多线程并发;

import java.util.Stack;

/**

* Created by z84102272 on 2018/7/17.

*/

public class BlockQueueImpl {

private final static Object pushLock = new Object(); //push的锁

private final static Object popLock = new Object(); //pop的锁

private Stack stack; //存储数据

public BlockQueueImpl(){

stack = new Stack<>();

}

/**

* push锁

*/

private void pushLock(){

synchronized (pushLock){

try{

pushLock.wait();

}catch (Exception e){

e.printStackTrace();

}

}

}

/**

* 释放push锁

*/

private void pushUnlock(){

pushLock.notify();

}

private void popLock(){

try {

popLock.wait();

}catch (Exception e){

e.printStackTrace();

}

}

private void popUnlock(){

popLock.notify();

}

public synchronized void push(Object o){

int MAX_SIZE = 3;

if (stack.size() >= MAX_SIZE){

pushLock();

}

stack.push(o);

popUnlock();

}

public Object pop(){

if (stack.size()==0){

popLock();

}

Object o = stack.pop();

pushUnlock();

return o;

}

}

原文:https://www.cnblogs.com/zyfzyfzyf/p/9324778.html

阻塞队列 java实现_JAVA实现阻塞队列相关推荐

  1. 无锁队列java实现_java轻松实现无锁队列

    深入解析java java虚拟机jvm编译器 348.5元 (需用券) 去购买 > 1.什么是无锁(Lock-Free)编程 当谈及 Lock-Free 编程时,我们常将其概念与 Mutex(互 ...

  2. java 数据结构_Java版-数据结构-队列(数组队列)

    前言 看过笔者前两篇介绍的 Java版数据结构 数组和 栈的盆友,都给予了笔者一致的好评,在这里笔者感谢大家的认可!!! 由于本章介绍的数据结构是 队列,在队列的实现上会基于前面写的 动态数组来实现, ...

  3. java 队列已满_java – ThreadPoolExecutor当队列已满时阻塞?

    在一些非常狭窄的情况下,您可以实现一个java.util.concurrent.RejectedExecutionHandler,它可以满足您的需要. RejectedExecutionHandler ...

  4. 循环队列的java结构_Java数据结构——循环队列

    普通顺序队列存在的问题 在普通顺序队列中,入队的操作就是先将尾指针rear右移一个单位,然后将元素值赋值给rear单位.出队时,则是头指针front后移一个单位.像这样进行了一定数量的入队和出队操作后 ...

  5. 阻塞队列和非阻塞队列(JAVA)

    文章目录 1.阻塞队列 1.1 代码举例 1.2 LinkedBlockingQueue 2.非阻塞队列 2.1 代码举例 2.2 ConcurrentLinkedQueue 1.阻塞队列 1.1 代 ...

  6. java 队列已满_JAVA中常见的阻塞队列详解

    在之前的线程池的介绍中我们看到了很多阻塞队列,这篇文章我们主要来说说阻塞队列的事. 阻塞队列也就是 BlockingQueue ,这个类是一个接 口,同时继承了 Queue 接口,这两个接口都是在JD ...

  7. Java并发编程:阻塞队列

    2019独角兽企业重金招聘Python工程师标准>>> 本文先讲述一下java.util.concurrent包下提供主要的几种阻塞队列,然后分析了阻塞队列和非阻塞队列的中的各个方法 ...

  8. java多线程 --ConcurrentLinkedQueue 非阻塞 线程安全队列

    ConcurrentLinkedQueue是一个基于链接节点的无界线程安全队列,它采用先进先出的规则对节点进行排序,当我们添加一个元素的时候,它会添加到队列的尾部:当我们获取一个元素时,它会返回队列头 ...

  9. Java并发编程之阻塞队列

    Java并发编程之阻塞队列 目录 阻塞队列概述 为什么用?有什么好处? BlockingQueue的核心方法 SynchronousQueue的用法 用在哪里 1. 阻塞队列概述 阻塞队列,顾名思义, ...

最新文章

  1. LeetCode: 929. Unique Email Addresses
  2. 【C语言探索之旅】 第一部分第六课:条件表达式
  3. java消息推送怎么实现_调用钉钉接口实现机器人推送消息
  4. Django从理论到实战(part49)--ModelForm
  5. [译] Airbnb 在 React Native 上下的赌注(一):概述
  6. android scheme打开天猫,淘宝
  7. DP项目计算机科学,动态规划DynamicProgrammingDP-天津大学计算机科学与技术学院.PPT...
  8. 软件_linux命令cp目录路径和通配符
  9. 【java笔记】random类生成随机数
  10. python3.7怎么用_Python 3.7.0 来了!
  11. 17.高性能MySQL --- MySQL 分支与变种
  12. java package 打包_java打包的两种方式整理
  13. PAT 甲级1069/乙级 1019 PAT Ranking 个人错误总结
  14. ASP.NET 安全认证(三)—— 用Form 表单认证实现单点登录(Single Sign On)
  15. constrain用法_constrain是什么意思_constrain的翻译_音标_读音_用法_例句_爱词霸在线词典...
  16. sqlmap工具使用手册
  17. 线程学习(13)-偏向锁
  18. 朋友圈集赞,简洁壁纸,玩游戏学git
  19. solr 通过DIH方式导入创建索引
  20. 2015年09月23日

热门文章

  1. flask学习笔记之blueprint
  2. python安装MySQLdb出错解决方案
  3. C# HashTable的用法总结
  4. java中关键字volatile的作用(转载)
  5. 【Python】Numpy扩充数组函数之repeat和tile用法
  6. discuz!x3 门户友情链接模块的横排显示
  7. window下启动nexus出错Unsupported major.minor version 51
  8. 下拉列表框Spinner
  9. IP别名与多网卡绑定(RHEL5/RHEL6)
  10. 数学之美系列14(转帖)