- 浏览: 1777763 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (723)
- IE 国际化 (1)
- java (310)
- python (52)
- Spring (101)
- eclipse (43)
- birt (10)
- exe4j (1)
- ActiveMQ (3)
- HornetQ (7)
- Ext (16)
- Linux (50)
- james (1)
- mail (3)
- 经验 (288)
- tomcat (5)
- Netty (3)
- ant (6)
- rsync (2)
- MD5 (3)
- 正则表达式 (3)
- 非技术 (59)
- mysql (28)
- sftp (1)
- Commons (2)
- oracle (3)
- vsftp (1)
- jdoc (1)
- socket (3)
- SEDA (2)
- UUID (1)
- quartz (7)
- javascript (50)
- sql (5)
- array (3)
- POI (3)
- redis (2)
- junit (4)
- 二维码 (1)
- jdk (8)
- h2 (6)
- maven (37)
- JVM (5)
- html (4)
- css (1)
- excel (4)
- myeclipse (2)
- scala (0)
- jQuery (5)
- log (10)
- slf4j (2)
- log4j (9)
- REST (15)
- guava (18)
- Joda-Time (7)
- ini4j (1)
- 配置文件 (2)
- lucene (1)
- database (3)
- curator (2)
- zookeeper (3)
- 并发 (2)
- jetty (6)
- ehcache (5)
- windows (1)
- protobuf (1)
- select2 (2)
- easyui (10)
- Freemarker (1)
- Filter (1)
- twisted (1)
- DateTime (11)
- mockrunner (1)
- DataSource (4)
- ajax (1)
- shell (18)
- powermockito (5)
- json (5)
- lombok (1)
- jointjs (1)
- cookie (1)
- mybatis (11)
- 加密解密 (2)
- 安全 (2)
- web (1)
- notepad++ (3)
- mac (48)
- sublime (14)
- git (7)
- docker (10)
- jar (1)
- gson (5)
- ubuntu (3)
- 模式 (1)
- neo4j (2)
- elasticsearch (1)
- OmniGranffle (1)
- ASCII (1)
- jdbc (3)
- kafka (1)
- MQ (1)
- chrome (3)
- 华为 (1)
- 路由器 (1)
- api (2)
- 架构 (1)
- 设计模式 (1)
- pip (4)
- springboot (48)
- 数据库 (4)
- thread (1)
- java.thread (1)
- sqlite (1)
- postman (1)
- springboot-actuator (2)
- jwt (1)
- token (1)
- brew (9)
- vim (1)
- virtualbox (1)
- Swagger (1)
- spring-retry (3)
- 调度 (1)
- item2 (5)
- graph (12)
- jgrapht (12)
- tuple (1)
- hadoop (5)
- curl (1)
- 算法 (3)
- Jekyll (1)
- github (1)
- ssh-keygen (1)
- zip (2)
- http (2)
- RestTemplate (8)
- 文件处理 (2)
- XStream (1)
- XML (3)
- JAXB (1)
- 笛卡尔积 (2)
- hive (1)
- 搜狗输入法 (1)
- 常用java类 (2)
- nginx (1)
- log4j2 (1)
- drawio (2)
- 安卓 (1)
- 小米 (1)
- okhttp (1)
- requests (1)
- 格式化 (2)
- MySQL Workbench (1)
- 分布式 (1)
- zip4j (1)
- hbase (5)
- hikari (1)
- javers (1)
- pydatetime (4)
- pyassert (1)
- pylog (2)
- tree (2)
- download (1)
- zeppelin (1)
- utils (2)
- wget (1)
- 鼠标 (1)
- 位运算 (2)
- open api (1)
- 域名 (1)
最新评论
-
youngcoder:
haohaohao~
Spring cache 注解功能不起作用的解决方案 -
kanpiaoxue:
lixz 写道有具体实例demo吗好多年前写的了。你还是去官网 ...
spring batch(一):基础部分 -
lixz:
有具体实例demo吗
spring batch(一):基础部分 -
BuDongOrz:
...
Spring MVC controller 读取配置文件 -
hvang1988:
理解错了,原来还是计数,不是时间
spring batch(二):核心部分(1):配置Spring batch
Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构
offer,add区别:
一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。
这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出一个 unchecked 异常,而只是得到由 offer() 返回的 false。
poll,remove区别:
remove() 和 poll() 方法都是从队列中删除第一个元素(head)。remove() 的行为与 Collection 接口的版本相似,
但是新的 poll() 方法在用空集合调用时不是抛出异常,只是返回 null。因此新的方法更适合容易出现异常条件的情况。
peek,element区别:
element() 和 peek() 用于在队列的头部查询元素。与 remove() 方法类似,在队列为空时, element() 抛出一个异常,而 peek() 返回 null。
-----------------------------------------------------------------------------------------
Tiger中有2组Queue的实现:实现了新的BlockingQueue接口的
和没有实现的
-------------------------------------------------------------
没有实现的阻塞接口的:LinkedList: 实现了java.util.Queue接口
java.util.AbstractQueue
内置的不阻塞队列: PriorityQueue 和 ConcurrentLinkedQueue
PriorityQueue 和 ConcurrentLinkedQueue 类在 Collection Framework 中加入两个具体集合实现。
PriorityQueue 类实质上维护了一个有序列表。加入到 Queue 中的元素根据它们的天然排序(通过其 java.util.Comparable 实现)或者根据传递给构造函数的 java.util.Comparator 实现来定位。
ConcurrentLinkedQueue 是基于链接节点的、线程安全的队列。并发访问不需要同步。因为它在队列的尾部添加元素并从头部删除它们,所以只要不需要知道队列的大小,ConcurrentLinkedQueue 对公共集合的共享访问就可以工作得很好。收集关于队列大小的信息会很慢,需要遍历队列。
------------------------------------------------------------------
实现阻塞接口的:
新的 java.util.concurrent 包在 Collection Framework 中可用的具体集合类中加入了 BlockingQueue 接口和五个阻塞队列类。
它实质上就是一种带有一点扭曲的 FIFO 数据结构。不是立即从队列中添加或者删除元素,线程执行操作阻塞,直到有空间或者元素可用。
五个队列所提供的各有不同:
* ArrayBlockingQueue :一个由数组支持的有界队列。
* LinkedBlockingQueue :一个由链接节点支持的可选有界队列。
* PriorityBlockingQueue :一个由优先级堆支持的无界优先级队列。
* DelayQueue :一个由优先级堆支持的、基于时间的调度队列。
* SynchronousQueue :一个利用 BlockingQueue 接口的简单聚集(rendezvous)机制。
前两个类 ArrayBlockingQueue 和 LinkedBlockingQueue 几乎相同,只是在后备存储器方面有所不同, LinkedBlockingQueue 并不总是有容量界限。无大小界限的 LinkedBlockingQueue 类在添加元素时永远不会有阻塞队列的等待(至少在其中有Integer.MAX_VALUE 元素之前不会)。
PriorityBlockingQueue 是具有无界限容量的队列,它利用所包含元素的 Comparable 排序顺序来以逻辑顺序维护元素。可以将它看作 TreeSet 的可能替代物。不过对 PriorityBlockingQueue 有一个技巧。从 iterator() 返回的 Iterator 实例不需要以优先级顺序返回元素。如果必须以优先级顺序遍历所有元素,那么让它们都通过 toArray() 方法并自己对它们排序,像 Arrays.sort(pq.toArray())。
新的 DelayQueue 实现可能是其中最有意思(也是最复杂)的一个。加入到队列中的元素必须实现新的 Delayed 接口(只有一个方法 —— long getDelay(java.util.concurrent.TimeUnit unit) )。因为队列的大小没有界限,使得添加可以立即返回,但是在延迟时间过去之前不能从队列中取出元素。如果多个元素完成了延迟,那么最早失效/失效时间最长的元素将第一个取出。实际上没有听上去这样复杂。
SynchronousQueue 类是最简单的。它没有内部容量。它就像线程之间的手递手机制。在队列中加入一个元素的生产者会等待另一个线程的消费者。当这个消费者出现时,这个元素就直接在消费者和生产者之间传递,永远不会加入到阻塞队列中。
----------------------------------------------
实验结果:
文档说BlockingQueue的队列: 不是立即从队列中添加或者删除元素,线程执行操作阻塞,直到有空间或者元素可用。
实验了一下,使用put、take是这样子的,线程在等待
而使用offer是立刻返回false的
---------// 引用自: http://zybing.itpub.net/post/170/376271
发表评论
-
swagger生成javaAPI的server&client代码
2021-03-25 11:05 947文章原文: 《Spring Boot: API ... -
springboot 返回JSON日期格式问题
2021-03-24 16:36 1112springboot返回的时间格式,根据版本的不同,可能返回 ... -
在其他项目中如何依赖一个springboot的jar?
2021-03-17 16:08 630资料:How to add a dependency ... -
指定java stream中并行处理的线程池大小
2021-03-04 11:38 1600Java8实战:并行线程池 写道 并行流内部使用了默认的F ... -
Can we disable the default web server in the Spring Boot application?
2021-02-22 11:07 278The major strong point in S ... -
Java 8 Comparator: How to Sort a List
2021-02-22 10:54 344文章地址: https://dzone.com/art ... -
Java Getter and Setter: Basics, Common Mistakes, and Best Practices
2021-02-22 10:19 512文章地址: https://dzone.com/ar ... -
Java String Format Examples
2021-02-22 10:14 313参考资料地址: 文章地址: https://dzo ... -
位运算&位掩码示例(权限)
2021-02-10 14:26 462参考资料地址: 1、https://juejin. ... -
Java 位移运算符
2021-02-08 16:21 417参考文章: 1、【 ... -
java中tree的应用示例:javax.swing.tree.DefaultMutableTreeNode
2021-02-03 15:03 497package org.kanpiaoxue. ... -
数据分页逻辑
2021-01-20 17:48 313//当前页 int intPage = I ... -
eclipse导入导出Snippets
2021-01-20 10:45 372导出: Display the snippets v ... -
eclipse迁移配置、插件(导出/导入快捷键、代码风格等等)
2021-01-20 10:28 776有的时候需要从一个eclipse导出它的所有配置,比如 ... -
eclipse需要的jdk版本查询
2021-01-18 11:38 502现在jdk的版本升级太快,eclipse的升级也 ... -
mac查看JAVA_HOME
2021-01-17 00:37 754在mac里面安装好java之后需要设置JAVA_HOM ... -
单例模式
2021-01-14 10:03 274参考资料: https://dzone.com/art ... -
计算工作日期的java工具类
2020-12-31 10:55 317import org.apache.common ... -
java的四舍五入
2020-12-30 11:59 466参考文章: https://www.cnblogs.c ... -
存储单位工具类(来自于hadoop)
2020-12-25 17:30 218/** * 存储单位工具类 * @ClassN ...
相关推荐
同时,还需要处理并发访问时的线程安全问题,如果队列将在多线程环境下使用,可能需要使用`synchronized`关键字或者`java.util.concurrent`包中的锁来保证线程安全。 `Java.jpg`可能是用来辅助理解队列概念的图片,...
`BlockingQueue` 是 `java.util.concurrent` 包中的一个接口,它扩展了传统的 `Queue` 接口,并引入了阻塞特性。这意味着当队列为空时,从队列中移除元素的操作将会阻塞;同样地,当队列满时,向队列添加元素的操作...
`java.util.concurrent` 包(简称JUC)是Java提供的一个强大的并发工具包,它提供了丰富的并发组件,如线程池、并发容器、锁和同步机制等,极大地简化了并发编程的复杂性。本篇文章将深入探讨如何使用`java.util....
### Java.util.concurrent同步器框架详解 #### 概述 Java平台在J2SE 1.5版本中引入了`java.util.concurrent`包,这是一系列中等层次的并发支持类集合,通过Java社区过程(Java Community Process, JCP)的Java规范...
`java.util.concurrent`包下的`ExecutorService`和`ThreadPoolExecutor`是实现线程池的关键类。通过指定核心线程数、最大线程数、线程空闲时间等参数,我们可以定制适合应用需求的线程池。提交任务到线程池通常使用`...
Map/List/Queue 阻塞队列 JUC锁: CountDownLatch 闭锁 AQS 锁的公共类 20180514 String, 部分Character 20180508 除 Set 外, 常用的 Collection 都已经分析完毕 简化语言描述, 增加测试用例(实践用法) 接触到新的类...
实现阻塞接口的Queue包括java.util.concurrent中的BlockingQueue接口和五个阻塞队列类。BlockingQueue接口是一个带有一点扭曲的FIFO数据结构。不是立即从队列中添加或者删除元素,线程执行操作阻塞,直到有空间或者...
本篇文章将深入探讨Java中队列(Queue)数据结构的实现。 队列是一种线性数据结构,遵循“先进先出”(FIFO,First In First Out)的原则。它的一端称为前端(Front)或头,另一端称为后端(Rear)。新元素在后端...
在Java中,我们可以利用`java.util.concurrent`包下的`BlockingQueue`接口及其实现类来创建这样的监视器。`BlockingQueue`提供了线程安全的队列操作,支持阻塞式插入和移除,非常适合在多线程环境中使用。 1. **`...
练习学习 java 包 java.util.concurrent 并直观地展示并发双端队列的工作原理。
3. **阻塞队列(BlockingQueue)**:`java.util.concurrent`包下的`BlockingQueue`接口扩展了Queue接口,并添加了线程安全的阻塞操作,如`put(E e)`、`take()`等。这些方法会在队列满时阻塞生产者,空时阻塞消费者,...
### Concurrent in Java: 并发编程的关键概念与技术 #### 一、概述 在现代软件开发中,并发编程是一项至关重要的技术,特别是在多核处理器普及的今天。Java平台提供了丰富的并发编程工具,其中`java.util....
- **并发队列(Concurrent Queue)**:在多线程环境中,允许多个线程同时进行入队和出队操作,通常需要复杂的同步机制,如Java的`java.util.concurrent`包中的队列。 通过分析这个项目的代码,我们可以学习到如何在...
Java还提供了一些同步机制,如 `synchronized` 关键字、`wait()`, `notify()` 和 `notifyAll()` 方法,以及 `java.util.concurrent` 包中的高级并发工具。 ```java class MyRunnable implements Runnable { public...
此外,项目可能还涉及事件驱动编程,使用Java的`java.util.concurrent`包中的`ExecutorService`和`Future`接口来调度任务执行和处理结果。这在处理大量并发请求时尤其有用,能够有效地管理线程资源并控制任务的执行...
这个主题涉及到Java并发库中的`java.util.concurrent.PriorityBlockingQueue`类,它是线程安全的,适用于高并发场景。 首先,`PriorityBlockingQueue`实现了`BlockingQueue`接口,这意味着它支持阻塞插入(put)和...
Java的`java.util.concurrent`包提供了多种阻塞队列实现,如ArrayBlockingQueue、LinkedBlockingQueue等。生产者通过`offer()`方法将元素放入队列,消费者则用`take()`方法取出元素。当队列满时,`offer()`会阻塞...
5. **多线程**:`java.lang.Thread`类和`java.util.concurrent`包提供了多线程编程的支持,包括线程的创建、同步控制、线程池管理等。 6. **日期和时间**:在Java 1.6中,`java.util.Date`和`Calendar`类是处理日期...
import java.util.concurrent.LinkedBlockingQueue; public class SafeBlockingQueue<T> { private final BlockingQueue<T> queue; public SafeBlockingQueue(int capacity) { this.queue = new ...
2. **集合框架**:在Java 6中,集合框架是一个重要的部分,它提供了多种数据结构,如列表(List)、队列(Queue)、集(Set)和映射(Map)。`java.util.ArrayList`和`java.util.LinkedList`是两种常见的列表实现,...