Java线程:新特征-阻塞栈

2023-11-16

本文转载至:http://lavasoft.blog.51cto.com/62575/222530

对于阻塞栈,与阻塞队列相似。不同点在于栈是“后入先出”的结构,每次操作的是栈顶,而队列是“先进先出”的结构,每次操作的是队列头。
 
这里要特别说明一点的是,阻塞栈是Java6的新特征。、
 
Java为阻塞栈定义了接口:java.util.concurrent.BlockingDeque,其实现类也比较多,具体可以查看JavaAPI文档。
 
下面看一个简单例子:

import java.util.concurrent.BlockingDeque; 
import java.util.concurrent.LinkedBlockingDeque; 

/** 
* Java线程:新特征-阻塞栈 
* 
* @author leizhimin 2009-11-5 15:34:29 
*/ 
public class Test { 
        public static void main(String[] args) throws InterruptedException { 
                BlockingDeque bDeque = new LinkedBlockingDeque(20); 
                for (int i = 0; i < 30; i++) { 
                        //将指定元素添加到此阻塞栈中,如果没有可用空间,将一直等待(如果有必要)。 
                        bDeque.putFirst(i); 
                        System.out.println("向阻塞栈中添加了元素:" + i); 
                } 
                System.out.println("程序到此运行结束,即将退出----"); 
        } 
}


运行结果:

向阻塞栈中添加了元素:0 
向阻塞栈中添加了元素:1 
向阻塞栈中添加了元素:2 
向阻塞栈中添加了元素:3 
向阻塞栈中添加了元素:4 
向阻塞栈中添加了元素:5 
向阻塞栈中添加了元素:6 
向阻塞栈中添加了元素:7 
向阻塞栈中添加了元素:8 
向阻塞栈中添加了元素:9 
向阻塞栈中添加了元素:10 
向阻塞栈中添加了元素:11 
向阻塞栈中添加了元素:12 
向阻塞栈中添加了元素:13 
向阻塞栈中添加了元素:14 
向阻塞栈中添加了元素:15 
向阻塞栈中添加了元素:16 
向阻塞栈中添加了元素:17 
向阻塞栈中添加了元素:18 
向阻塞栈中添加了元素:19


从上面结果可以看到,程序并没结束,二是阻塞住了,原因是栈已经满了,后面追加元素的操作都被阻塞了。
 


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java线程:新特征-阻塞栈 的相关文章

  • Java 终止嵌套for 循环总结

    public class NestedLoopDemo public static void main String args 第一步 构建嵌套for 循环 for int i 0 i lt 10 i for int j 0 j lt 10
  • Java 反射 与 主要API

    控制你的大脑 控制你的行为 你会得到更多 收获很多 文章目录 一 反射相关的主要API 二 代码例子演示 三 反射测试类 一 反射相关的主要API API 名称 代表含义 Java lang class 代表一个类 java lang re
  • java并发包:读写锁

    本文转载至 http blog csdn net a910626 article details 51900954 ReadWriteLock是jdk5中提供的读写分离锁 读写分离锁可以有效的帮助减少锁竞争 以提升性能 用锁分离的机制来提升
  • (java基础知识)HashMap排序,Comparator接口详解

    对于List 可以调用Collections工具类的sort 方法 直接进行排序 HashMap 就没这么幸福了 其实 只要了解了Comparator这个接口之后 HashMap的排序也就不难了 无论是根据key 还是根据value排序 这
  • Java 父类 与子类之间的转换

    一 子类的实列化通过父类实现 代码正常 二 基于子类的实列化是通过父类实现 强制转换父类 代码正常 三 父类的实列化不能强制转换为子类 代码错误 提示 java lang ClassCastException 针对第三种情况 建议采用方案
  • java 清除字符串空格

    JAVA中去掉空格 1 String trim trim 是去掉首尾空格 2 str replace 去掉所有空格 包括首尾 中间 String str hell o String str2 str replaceAll System ou
  • Java线程:线程的同步-同步方法

    本文转载至 http lavasoft blog 51cto com 62575 221914 Java线程 线程的同步 同步方法 线程的同步是保证多线程安全访问竞争资源的一种手段 线程的同步是Java多线程编程的难点 往往开发者搞不清楚什
  • java 线程:概念与原理

    本文转载至 http lavasoft blog 51cto com 62575 99150 一 操作系统中线程和进程的概念 现在的操作系统是多任务操作系统 多线程是实现多任务的一种方式 进程是指一个内存中运行的应用程序 每个进程都有自己独
  • Java线程:新特征-障碍器

    本文转载至 http lavasoft blog 51cto com 62575 222738 Java5中 添加了障碍器类 为了适应一种新的设计需求 比如一个大型的任务 常常需要分配好多子任务去执行 只有当所有子任务都执行完成时候 才能执
  • java 多线程 总结三

    本文转载至 http blog csdn net vking wang article details 9952063 1 synchronized 把代码块声明为 synchronized 有两个重要后果 通常是指该代码具有 原子性 at
  • (java 基础知识)java序列化和反序列话总结

    序列化 将java对象转换为字节序列的过程叫做序列化 反序列化 将字节对象转换为java对象的过程叫做反序列化 通常情况下 序列化有两种用途 1 把对象的字节序列永久的保存在硬盘中 2 在网络上传输对象的字节序列 相应的API java i
  • Java线程:新特征-有返回值的线程

    本文转载至 http lavasoft blog 51cto com 62575 222082 在Java5之前 线程是没有返回值的 常常为了 有 返回值 破费周折 而且代码很不好写 或者干脆绕过这道坎 走别的路了 现在Java终于有可返回
  • Java线程:线程的调度-守护线程

    本文转载至 http lavasoft blog 51cto com 62575 221845 Java线程 线程的调度 守护线程 守护线程与普通线程写法上基本么啥区别 调用线程对象的方法setDaemon true 则可以将其设置为守护线
  • 代码质量保障第2讲:单元测试 - 浅谈单元测试

    代码质量保障第2讲 单元测试 浅谈单元测试 本文是代码质量保障第2讲 浅谈单元测试 单元测试 unit testing 是指对软件中的最小可测试单元进行检查和验证 这是基础 所以围绕着单元测试 我从网上搜集和总结了相关的概念 以助你完善体系
  • java并发包:生产者消费者模式

    本文转载至 http blog csdn net a910626 article details 51900974 生产者消费者模式是一个经典的多线程设计模式 它为多线程间的协作提供了良好的解决方案 在生产者消费者模式中 通常有两类线程 即
  • java并发包:重入锁与Condition条件

    本文转载至 http blog csdn net a910626 article details 51900941 重入锁 这里介绍一下synchronized wait notify方法的替代品 或者说是增强版 重入锁 重入锁是可以完全替
  • java 多线程学习笔记之 线程同步

    在前面我们将了很多关于同步的问题 然而在现实中 需要线程之间的协作 比如说最经典的生产者 消费者模型 当队列满时 生产者需要等待队列有空间才能继续往里面放入商品 而在等待的期间内 生产者必须释放对临界资源 即队列 的占用权 因为生产者如果不
  • Java线程:新特征-阻塞栈

    本文转载至 http lavasoft blog 51cto com 62575 222530 对于阻塞栈 与阻塞队列相似 不同点在于栈是 后入先出 的结构 每次操作的是栈顶 而队列是 先进先出 的结构 每次操作的是队列头 这里要特别说明一
  • 线程管理之Thread类相关方法简介

    CurrentThread 静态方法 currentThread 方法可返回代码段正在被那个线程调用的信息 简单案列 打印main 方法 正在被那个线程调用 package com zzg thread import com zzg obj
  • java并发包:fork/join

    本文转载至 http blog csdn net a910626 article details 51900967 Fork Join框架是Java7提供了的一个用于并行执行任务的框架 是一个把大任务分割成若干个小任务 最终汇总每个小任务结

随机推荐

  • global::System.Runtime.Versioning.TargetFrameworkAttribute 特性重复问题处理

    今天编译程序遇到global System Runtime Versioning TargetFrameworkAttribute 特性重复错误 原因是编译时生成的 NETFramework Version v4 6 1 AssemblyA
  • 记一次MySql还原导致的无法连接

    问题 昨天同事使用服务器的MySql数据库还原了一个5GB 的备份 结果一直卡住 他就将数据库强行关闭 没再执行任何其他操作 结果今天客户反馈登录异常 逐步排查 定位到是数据库无法访问 于是远程查看服务器 发现 MySql服务是正在运行的
  • RTKlib软件源码学习(观测文件与星历文件读取)

    本文基于本人对rtklib源码的学习进行顺序汇总 为记录个人的学习与理解 并根据个人需要对部分代码对其进行注释 如有错误或者不完善的地方烦请提出建议或改正方法 目录 1 execses函数 2 readobsnav函数 3 readrnxt
  • 【JS逆向】之HOOK代码怎么写

    声明 本文只作学习研究 禁止用于非法用途 否则后果自负 如有侵权 请告知删除 谢谢 前言 我解释一下hook是什么玩意 hook的原意是钩子 我理解替换或者拦截原有方法去修改和处理 1 怎么去替换原来的方法 这里我自己写一个方法去替换 实例
  • 中关村归国留学人员联创中心揭牌仪式,Jina AI 受邀出席活动

    2022 年 9 月 25 日上午 中关村归国留学人员联创中心揭牌仪式在中关村创业大街顺利举行 Jina AI 联合创始人兼 COO 何烜彬现场进行企业项目分享 并面向现场各海外高校校友代表发出人才招募邀请 活动背景 为更好地服务国际化人才
  • matlab入门基础:矩阵操作(一)

    系列笔记目录 第二节 矩阵操作 一 创建特殊矩阵 矩阵的运算 文章目录 系列笔记目录 前言 一 创建特殊矩阵 二 矩阵运算 1 矩阵元素的修改 2 矩阵的变维 3 矩阵的变向 4 矩阵的抽取 练习 三 矩阵的数学运算 总结 前言 MATLA
  • C++ - Vector 计算 均值(mean) 和 方差(variance)

    C Vector 计算 均值 mean 和 方差 variance 代码 double sum std accumulate std begin resultSet std end resultSet 0 0 double mean sum
  • C++通讯录管理系统(简单版)

    这个通讯录管理系统是我听课后做的笔记 都是很基础的逻辑实现 第一次动手写了一个小案例感觉找到了一点方向 也希望能帮到一点忙 1 系统需求 通讯录是一个可以记录亲人 好友信息的工具 本教程主要利用C 来实现一个通讯录管理系统 系统中需要实现的
  • PowerDesigner将PDM导出生成WORD文档--温习老知识

    今天的温习老知识 是如何将一个PD设计的PDM来导出WORD文档 这是一个非常实用的功能 可以在软件过程的数据库设计文档编写中节省N多时间 那不废话了 我们就开始今天的讲解吧 第一步 点击Report Temlates 制作模板 第二步 时
  • 1. 创建和生成

    文章目录 创建和生成 从 python 列表或元组创建 使用 arange 生成 使用 linspace logspace 生成 np linspace 使用 ones zeros 创建 使用 random 生成 从文件读取 本教程内容旨在
  • Python:实现多个txt文本的简单合并,亲测简单好用,保姆教程

    声明 非原创 我是python废废 原博客连接为 Python批量合并多个txt文件 自由的小白的博客 CSDN博客 python 合并多个txt 我在这里只做分享 好博客要更多人看到嘛 一 成果展示 我希望实现简单的txt文本合并 合并前
  • APP的接口版本管理 实现多版本共存

    思路 用户请求url gt 拦截器拦截 gt 转发到真正处理类和方法 gt 返回结果 url注解类 package com jc app util apiVersion import java lang annotation 需要拦截的AP
  • platform 设备驱动实验

    目录 Linux 驱动的分离与分层 驱动的分隔与分离 驱动的分层 platform 平台驱动模型简介 platform 总线 platform 驱动 platform 设备 硬件原理图分析 试验程序编写 platform 设备与驱动程序编写
  • springcloud+docker+elk搭建日志分析系统

    springcloud docker elk搭建日志分析系统 elk架构 搭建步骤 创建对应配置文件 注 编排文件与logstash和kibana在同一文件夹下 logstash conf配置 input tcp mode gt serve
  • 人工智能的数学基石:揭秘人工智能十大数学基础

    人工智能 Artificial Intelligence 简称AI 正以惊人的速度改变着我们的生活 然而 要实现智能的机器 离不开数学的支持 本文将带你深入探索人工智能的数学基础 揭示AI背后的数学奥秘 一 线性代数 Linear Alge
  • 函数对象(重载括号运算符)

    函数对象 重载括号运算符 函数对象超出普通函数的概念 函数对象可以有自己的状态 在使用stl中 经常需要将函数对象作为算法的输入参数 或实例子化一个容器的输入参数
  • NodeJs之邮件(email)发送

    NodeJs之邮件 email 发送 一 介绍与需求 1 1 介绍 1 Nodemailer简介 Nodemailer是一个简单易用的Node js邮件发送插件 github地址 Nodemailer的主要特点包括 支持Unicode编码
  • SpringBoot+Shiro+LayUI权限管理系统项目-9.核心知识点总结

    1 说明 本篇讲一下本项目几个重要的知识点 详细看源码 文章下方捐赠或QQ联系捐赠获取 2 Shiro如何设置密码加密算法 1 在shiro配置文件中添加 Bean public HashedCredentialsMatcher hashe
  • 协方差矩阵的几何解释

    A geometric interpretation of the covariance matrix http www visiondummy com 2014 04 geometric interpretation covariance
  • Java线程:新特征-阻塞栈

    本文转载至 http lavasoft blog 51cto com 62575 222530 对于阻塞栈 与阻塞队列相似 不同点在于栈是 后入先出 的结构 每次操作的是栈顶 而队列是 先进先出 的结构 每次操作的是队列头 这里要特别说明一