文档章节

并发编程-线程池-Queue

h
 haidao1992
发布于 2017/08/05 10:45
字数 319
阅读 2
收藏 0

        在Java多线程应用中,队列的使用率很高,Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。

1)LinkedBlockingQueue 

        是一个阻塞的线程安全的队列,底层应该采用链表实现,LinkedBlockingQueue 可以指定容量,也可以不指定,不指定的话,默认最大是Integer.MAX_VALUE。

        看其API的时候发现,添加元素的方法竟然有三个:add,put,offer

add方法在添加元素的时候,若超出了度列的长度会直接抛出异常;

 put方法若向队尾添加元素的时候发现队列已经满了会发生阻塞一直等待空间,以加入元素;

offer方法在添加元素时,如果发现队列已满无法添加的话,会直接返回false。

         从队列中取出并移除头元素的方法有:poll,remove,take

poll: 若队列为空,返回null;

remove:若队列为空,抛出NoSuchElementException异常;

take:若队列为空,发生阻塞,等待有元素。

© 著作权归作者所有

h
粉丝 1
博文 26
码字总数 27021
作品 0
浦东
程序员
私信 提问
SEAD架构介绍

由于这个架构没怎么学习,只是简单做一下记录,据说 Cassandra就是用架构实现的 一、传统并发模型的缺点 基于线程的并发 特点: 每任务一线程 直线式的编程 使用资源昂高, context切换代价高...

满小茂
2016/04/15
173
0
Concurrent包学习(一)

java.util.concurrent包下面提供了很多多并发编程的工具和框架,locks 下面提供了锁相关的工具,例如ReentrantLock(可重入锁)、condition等在其他的类中经常有使用,提供了HashMap、Queue...

alvaDing
2016/09/24
34
0
iOS GCD队列dispatch简单的使用

iOS从iOS 4引入了libdispatch来实现消息队列的编程 一、dispatch队列的生成可以有这几种方式 1. dispatchqueuet queue = dispatchqueuecreate("user.dispatch.mulitworker", DISPATCHQUEUESE......

IamOkay
2016/03/31
274
0
京东架构师-----解析Hystrix线程隔离技术

认识Hystrix Hystrix是Netflix开源的一款容错框架,包含常用的容错方法:线程隔离、信号量隔离、降级策略、熔断技术。 在高并发访问下,系统所依赖的服务的稳定性对系统的影响非常大,依赖有...

James-
2018/05/09
212
0
iOS多线程编程之NSOperation和NSOperationQueue的使用

目录(?)[-] iOS多线程编程之NSThread的使用 使用 NSOperation的方式有两种 一种是用定义好的两个子类 另一种是继承NSOperation NSInvocationOperation例子 第二种方式继承NSOperation 如何控...

malawo
2013/09/05
30
0

没有更多内容

加载失败,请刷新页面

加载更多

Eureka应用注册与集群数据同步源码解析

在之前的EurekaClient自动装配及启动流程解析一文中我们提到过,在构造DiscoveryClient类时,会把自身注册到服务端,本文就来分析一下这个注册流程 客户端发起注册 boolean register() t...

Java学习录
34分钟前
10
0
Java描述设计模式(15):责任链模式

本文源码:GitHub·点这里 || GitEE·点这里 一、生活场景描述 1、请假审批流程 公司常见的请假审批流程:请假天数 当 day<=3 天,项目经理审批当 3<day<=5 天,部门经理审批当 day>5 天...

知了一笑
45分钟前
8
0
总结:数组与链表

1、内存申请:数组在内存上是连续的空间;链表,内存地址上可以是不连续的。 2、查询速度:数组可以随机访问,链表必须顺序访问,即从首个元素开始遍历,逐个查找,所以数组查询很快。 3、写入...

浮躁的码农
53分钟前
6
0
HashMap源码分析

read

V丶zxw
今天
5
0
Python字符串或JSON字符串转字典dict、列表list

有3种方法 1、使用ast模块 >>> import ast>>> s = '["test",1]'>>> ast.literal_eval(s)['test',1]>>> s = '{"test":1}'>>> ast.literal_eval(s){'test': 1} 2、eval函数,这个......

编程老陆
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部