阻塞队列--LinkedBlockingQueue
来源:互联网 发布:linux more less 区别 编辑:程序博客网 时间:2024/05/21 18:40
什么叫线程安全?
线程安全就是每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的。
线程安全就是说多线程访问同一代码,不会产生不确定的结果。
并行和并发区别
1、并行是指两者同时执行一件事,比如赛跑,两个人都在不停的往前跑;
2、并发是指资源有限的情况下,两者交替轮流使用资源,比如一段路(单核CPU资源)同时只能过一个人,A走一段后,让给B,B用完继续给A,交替使用,目的是提高效率。
LinkedBlockingQueue是一个线程安全的阻塞队列,实现了先进先出等特性,是作为生产者消费者的首选,可以指定容量,也可以不指定,不指定的话默认最大是Integer.MAX_VALUE,其中主要用到put和take方法,put方法将一个对象放到队列尾部,在队列满的时候会阻塞直到有队列成员被消费,take方法从head取一个对象,在队列为空的时候会阻塞,直到有队列成员被放进来。
常用方法如下:
add(anObject):
把anObject添加到BlockingQueue里,添加成功返回true,如果BlockingQueue空间已满则抛出异常。
offer(anObject):
表示如果可能的话,将anObject加到BlockingQueue里,即如果BlockingQueue可以容纳,则返回true,否则返回false。
put(anObject):
把anObject加到BlockingQueue里,如果BlockingQueue没有空间,则调用此方法的线程被阻断直到BlockingQueue里有空间再继续。
poll(time):
获取并移除此队列的头,若不能立即取出,则可以等time参数规定的时间,取不到时返回null。
take():
获取BlockingQueue里排在首位的对象,若BlockingQueue为空,阻断进入等待状态直到BlockingQueue有新的对象被加入为止。
clear():
从队列彻底移除所有元素。
remove()方法直接删除队头的元素
peek()方法直接取出队头的元素,并不删除
- 阻塞队列 BlockingQueue LinkedBlockingQueue
- 阻塞队列--LinkedBlockingQueue
- 阻塞队列LinkedBlockingQueue用法
- 阻塞队列--LinkedBlockingQueue
- 链阻塞队列 LinkedBlockingQueue
- 阻塞队列之LinkedBlockingQueue
- 四 : LinkedBlockingQueue 链阻塞队列
- linkedBlockingQueue实现事件阻塞队列
- 阻塞队列LinkedBlockingQueue源码分析
- 阻塞队列LinkedBlockingQueue源码分析
- 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue
- 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue
- 基于LinkedBlockingQueue源码自我实现阻塞队列
- 阻塞队列--线程安全的LinkedBlockingQueue
- java-并发集合-阻塞队列 LinkedBlockingQueue 演示
- 阻塞消息队列LinkedBlockingQueue主要方法
- JAVA阻塞队列LinkedBlockingQueue以及非阻塞队列ConcurrentLinkedQueue区别
- 非阻塞队列ConcurrentLinkedQueue与阻塞队列LinkedBlockingQueue原理探究
- Spring@Autowired注解与自动装配
- 使用OpenSSL生成RSA公钥和私钥
- 阻塞队列BlockingQueue用法
- New Reform
- Hadoop的PathFilter使用
- 阻塞队列--LinkedBlockingQueue
- unity UGUI Toggle事件管理
- ARM Linux 3.x的设备树(Device Tree)
- Javascript中的apply与call详解
- javascript获取网页中指定节点的父节点、子节点的方法小结
- log4j基础知识&Log4j.properties配置讲解
- PHP实现301重定向
- Java UOOK 课程学习笔记 1
- iOS开发系列之Xcode插件--Alcatraz的安装和使用