java 先入先出,java_阻塞队列(FIFO先进先出)

java_阻塞队列(FIFO先进先出)

d962e260e12244304f2ea5265b497501.png

ArrayBlockingQueue:由数组结构组成的有界阻塞队列;

LinkedBlockingQueue:由链表结构组成的有界阻塞队列(但大小默认值为:Integer.MAX_VALUE);

PriorityBlockingQueue:支持优先级排序的***阻塞队列;

DelayQueue:使用优先级队列实现的延迟***阻塞队列;

SynchronousQueue:不存储元素的阻塞队列,也即单个元素的队列;

LinkedTransferQueue:由链表结构组成的***阻塞队列;

LinkedBlockingDeque:由链表结果组成的双向阻塞队列;

bc724b70422491208944f3f89618a7e0.png

72e29dc45b34e94ae34dd328e1d23746.png

dee9adc9870d478b42a793de643b39e1.png

阻塞队列核心方法

41ec45496eb737c45b30455afd5de42d.png

f13b59133c0fefa0c1ef79ba764d1d97.png

add(e):为阻塞队列添加一个元素e,添加成功返回 true,当阻塞队列满时,抛出异常 java.lang.IllegalStateException: Queue full

remove():为阻塞队列移除一个元素,移除成功时返回移除的元素,当阻塞队列为空时,抛出异常 java.util.NoSuchElementException

element():检查当前阻塞队列的首个元素,成功时返回首个元素,当阻塞队列为空时,抛出异常 java.util.NoSuchElementException

offer(e):为阻塞队列添加一个元素e,添加成功返回 true,当阻塞队列满时返回 false

poll():为阻塞队列移除一个元素,移除成功时返回移除的元素,当阻塞队列为空时,返回 null

peek():检查当前阻塞队列的首个元素,成功时返回首个元素,当阻塞队列为空时,返回 null

put(e):为阻塞队列添加一个元素e,无返回值,当阻塞队列满时会阻塞线程,直到操作成功为止

take():为阻塞队列移除一个元素,成功时返回首个元素,当阻塞队列为空时会阻塞线程,直到操作成功为止

offer(e,time,unit):为阻塞队列添加一个元素e,添加成功返回 true,当阻塞队列满时会阻塞队列一段时间(time:long类型的时间,unit为时间单位),失败返回 false

poll(time,unit):为阻塞队列移除一个元素,移除成功时返回移除的元素,当阻塞队列为空时,会阻塞队列一段时间(time:long类型的时间,unit为时间单位),失败返回  null

SynchronousQueue:不存储元素的阻塞队列

8600b95749fc26c5e46d7a632cd0005a.pngpublic class SynchronousQueueDemo {public static void main(String[] args) {

BlockingQueue queue = new SynchronousQueue<>();new Thread(() ->{try {

System.out.println(Thread.currentThread().getName()+"\t put 1");

queue.put(1);

System.out.println(Thread.currentThread().getName()+"\t put 2");

queue.put(2);

System.out.println(Thread.currentThread().getName()+"\t put 3");

queue.put(3);

} catch (InterruptedException e) {

e.printStackTrace();

}

},"A").start();new Thread(() ->{try {try { TimeUnit.SECONDS.sleep(3); }catch (Exception e){ e.printStackTrace(); }

System.out.println(Thread.currentThread().getName()+"\t"+queue.take());try { TimeUnit.SECONDS.sleep(3); }catch (Exception e){ e.printStackTrace(); }

System.out.println(Thread.currentThread().getName()+"\t"+queue.take());try { TimeUnit.SECONDS.sleep(3); }catch (Exception e){ e.printStackTrace(); }

System.out.println(Thread.currentThread().getName()+"\t"+queue.take());

} catch (InterruptedException e) {

e.printStackTrace();

}

},"B").start();

}

}

168cbea806627f4ebbf2119aabe8dc32.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP能在Mac上运行吗,PHP Composer无法在Mac上运行

我安装了bitnami mac堆栈主要是因为我的项目需要至少PHP 5.4.7版本.但是,我遇到了作曲家的问题.这是我跑步时遇到的错误&#xff1a;php composer.phar install --dev错误&#xff1a;Richard-Knops-MacBook-Pro:my-project richardknop$php composer.phar install --devdyld: …

主机安装php网站,php支持虚拟主机(php网站空间)

php设置虚拟主机&#xff0c;主要是为了在ie输入地址栏是&#xff0c;可以输入任意的&#xff0c;而不是localhost/&#xff0c;为了方便&#xff0c;但是设置起来很不方便的。。发现不能实现每个站点使用不同的PHP版本&#xff0c;想向大家求教一下&#xff0c;有没有能让。支…

php时分获取秒数,javascript与php时/分/秒与秒数互转

javascript&#xff1a;/*时间转换成秒*/function time_to_second(time){var arr time.split(‘:‘)var hour arr[0]?arr[0]:0var minute arr[1]?arr[1]:0var second arr[2]?arr[2]:0var ret hour * 3600 minute * 60 secondreturn ret}/*秒转换成时间*/function sec…

lbp matlab程序,求教大神给解释一下LBP特征提取每部分程序是干什么的

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼function X1 LBP(Resimage)% Returns a rotation invariant LBP (uniform patterns) histogram (10 bins)% of picture X.% the size of picture X must be at least 3x3 pixelsw1 (1/sqrt(2))^2;%根号1/2平方w2 (1-1/sqrt(2))*…

python以20字符宽居中输出,Python 字符串内置方法(一)

以下方法只需要知道用法就行了&#xff0c;权当了解&#xff0c;不用硬背&#xff0c;以后需要用到的时候再回来看说明&#xff1a;一般方法中前面是is开头的就是判断来的&#xff0c;输出不是True就是False&#xff0c;例如isalpha()方法capitalize()方法&#xff1a;首字母大…

php 复选框全选和取消,基于JavaScript实现复选框的全选和取消全选

这篇文章主要为大家详细介绍了基于JavaScript实现复选框的全选和取消全选&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下本文实例为大家分享了js复选框的全选和取消全选的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下效果图&#xff1a;…

oracle 字段全大写,Oracle如何批量将表中字段名全转换为大写(利用简单存储过程)...

前言今天查询一个数据字段一直提示字符无效&#xff0c;明明在数据库表字段中是存在的&#xff1b;查询后得知&#xff0c;数据库表字段为小写时&#xff0c;查询需要将字段名小写并加上双引号&#xff1b;表名同理&#xff0c;我这里表名是大写&#xff0c;暂时不需要改。搜到…

oracle的al32utf8,oracle字符集修改(AL32UTF8-UTF8)

author&#xff1a;skatetime&#xff1a;2012/04/10AL32UTF8->UTF8步骤shutdown immediate;startup mount;alter session set sql_tracetrue;alter system enable restricted session;alter system set job_queue_processes0;alter system set aq_tm_processes0;alter data…

javascript date php date,JavaScript Date 知识浅析

Date函数new Date()Date 对象会自动把当前日期和时间保存为其初始值。date.getDate()从 Date 对象返回一个月中的某一天 (1 ~ 31)。date.getDay()从 Date 对象返回一周中的某一天 (0 ~ 6)。周日是0。date.getMonth()从 Date 对象返回月份 (0 ~ 11)。date.getFullYear()从 Date …

16字节 oracle md5,Oracle中的MD5加密

因为要用到MD5加密&#xff0c;所以在网上搜了一下相关资料&#xff0c;并进行仔细研究。其核心就是MD5编码的数据包函数&#xff1a;DBMS_OBFUSCATION_TOOLKIT.M因为要用到MD5加密&#xff0c;所以在网上搜了一下相关资料&#xff0c;并进行仔细研究。其核心就是MD5编码的数据…

ip字符串转换 linux,Linux网络编程入门

在日常使用&#xff0c;我们更多的使用十进制字符串表示IP地址&#xff0c;比如192.169.130.66&#xff0c;而不是记忆32位的IP地址(关键是太长了记不住呀)&#xff0c;使用字符串IP更为方便&#xff0c;可读性也更好。但是根据上述in_addr定义&#xff0c;网络编程中需要的是网…

linux php目录是否存在,PHP判断文件或者目录是否可写,兼容windows/linux系统

在PHP中&#xff0c;可用is_writable()函数来判断一个 文件/目录 是否可写&#xff0c;用是否可生成文件的方式判断目录是否可写&#xff1b;网上的一些代码大多数能判断linux系统&#xff0c;但windows服务器下判断不准确。下面的代码兼容windows和linux判断文件或目录是否可写…

linux 脚本 发送邮件,shell 脚本发送邮件

有时候会使用脚本完成一系列的自动化工作&#xff0c;工作完成后还需要邮件通知相关人员&#xff0c;此时可以使用第三方的工具&#xff1a;SendEmail,最新版本sendEmail-v1.56.tar.gz下载地址&#xff1a;http://caspian.dotconf.net/menu/Software/SendEmail/sendEmil的使用范…

link linux 跨设备,Linux中的两种link方式

Linux系统中包括两种链接方式&#xff1a;硬链接(hard link)和符号链接(symbolic link)&#xff0c;其中符合链接就是所谓的软链接(soft link)&#xff0c;那么两者之间到底有什么区别呢&#xff1f;inode在Linux系统中&#xff0c;内核为每一个新创建的文件分配一个inode&…

linux 运行ca.crt,linux下使用openssl生成 csr crt CA证书,opensslcsr

linux下使用openssl生成 csr crt CA证书&#xff0c;opensslcsr本文主要借鉴和引用了下面2个地址的内容&#xff0c;然后在自己的机器上进行了测试和执行&#xff0c;并做了如下记录。ref:http://blog.chinaunix.net/uid-26760055-id-3128132.htmlhttp://www.111cn.net/sys/lin…

linux cpu核数和线程数,cpu个数、核数和线程的理解

1.查看物理cpu个数grep physical id /proc/cpuinfo | sort -u | wc -l2.查看核心数量grep core id /proc/cpuinfo | sort -u | wc -l3.查看线程数grep processor /proc/cpuinfo | sort -u | wc -lcat /proc/cpuinfo 查看文件里面关键信息processor : 23 ----------代表…

linux设置超链接,帮助-链接 - Linux Kernel Newbies

this page is outdated and needs to be fixed参考链接形式语法备注内部链接WikiNameCamelCase page name内部自由链接["Page"] or ["free link"]可配置函数内部子页面链接/SubPage or ["/Sub page"]相对于上一级页面外部链接http://example.net…

linux 文件系统cache,终于找到一篇详解Linux文件系统Cache的文章

级别&#xff1a; 初级2006 年 5 月 11 日文件 Cache 管理是 Linux 内核中一个很重要并且较难理解的组成部分。本文详细介绍了 Linux内核中文件 Cache 管理的各个方面&#xff0c;希望能够对开发者理解相关代码有所帮助。自从诞生以来&#xff0c;Linux 就被不断完善和普及&…

宝塔Linux怎么安装Mariadb,如何在linux上面安装mariadb总结

1、下载MariaDB(mariadb-5.5.31.tar.gz)[rootzabbix_server opt]# wget http://www.cmake.org/files/v2.8/cmake-2.8.5.tar.gz2、安装MariaDB[rootzabbix_server opt]# tar xzvf mariadb-5.5.31.tar.gz[rootzabbix_server cmake-2.8.5]# cd cmake-2.8.5[rootzabbix_server cmak…

c语言数码管加法程序怎么写,拜托大神写数码管与矩阵键盘结合设计简易计算器C语言的程序...

我和你用的是一样的&#xff0c;给你一个我买板子送的矩阵程序//4*4键盘检测程序,按下键后相应的代码显示在数码管上#includesbit beepP2^3;sbit dulaP2^6;sbit welaP2^7;unsigned char i100;unsigned char j,k,temp,key;void delay(unsigned char i){for(ji;j>0;j--)for(k1…