`

JAVA并发类记录

    博客分类:
  • java
 
阅读更多

1.ArrayBlockingQueue: 一把锁,add 就是调用的offer,只是失败会抛异常,都不会等待

2.LinkedBlockingQueue: 两把锁,放和取不同锁

3.LinkedBlockingDeque: 双向 只有一把锁

4.ConcurrentLinkedQueue: CAS无锁算法,队列

 

5 SynchronousQueue: 可以认为SynchronousQueue是一个缓存值为1的阻塞队列,但是 isEmpty()方

 

法永远返回是true,remainingCapacity() 方法永远返回是0,remove()和removeAll() 方法永远返

 

回是false,iterator()方法永远返回空,peek()方法永远返回null

 

6.ConcurrentHashMap 分区(一个区相当于一个MAP),区内采用同一互拆锁;默认16个区,16个容

 

量,也就是一个区一个。 某个区不够是其容量*2扩展。值都是采取原子存。

存加锁;取时有值时不用锁,找到KEY没值时(加锁进入获取)等待写的锁释放再取,重要的是后面写

 

入的KEY是放在链头部的,才不用对KEY加锁读。

KEY相同是 由HASH且EQUALS相同。

  HASHMAPKEY相同是  由HASH且(==或EQUALS)

7. ConcurrentSkipListMap 有序的跳表结构,多层链表。用空间换取查询时间

8. CopyOnWriteArrayList 其中所有可变操作(add、set 等等)都是通过对底层数组进行一次新的

 

复制来实现的.这一般需要很大的开销,但是当遍历操作的数量大大超过可变操作的数量时,这种方

 

法可能比其他替代方法更 有效。

9.PriorityBlockingQueue 有序队列,默认11个,无界,可以自动增加。一把锁,TAKE会阻塞。内部

 

直接用的PriorityQueue

10.DelayQueue 无界阻塞延时队列,元素有延时时间,到期了,才能取出。一把锁

 

ThreadPoolExecutor:

corePoolSize和maximumPoolSize(根据队列边界是否扩展),运行线程小于corePoolSize时,则创

 

建新的线程,大于等于CORESIZE而少于最大SIZE时,放入队列等待空闲线程调用,列队满时创建新

 

线程。如果池中当前有多于 corePoolSize 的线程,则这些多出的线程在空闲时间超过 

 

keepAliveTime 时将会终止。

 

所有 BlockingQueue 都可用于传输和保持提交的任务。可以使用此队列与池大小进行交互: 

如果运行的线程少于 corePoolSize,则 Executor 始终首选添加新的线程,而不进行排队。 

如果运行的线程等于或多于 corePoolSize,则 Executor 始终首选将请求加入队列,而不添加新的

 

线程。 

如果无法将请求加入队列,则创建新的线程,除非创建此线程超出 maximumPoolSize,在这种情况

 

下,任务将被拒绝

 

12. ScheduledThreadPoolExecutor 带时间器的线程池,继承自ThreadPoolExecutor,用的是延迟

 

队列,MAX最大。

分享到:
评论

相关推荐

    java统计高并发首页访问量,记录客户登录信息

    在Java开发中,统计高并发环境下首页访问量并记录客户登录信息是一项常见的需求,这涉及到系统性能优化、数据持久化以及并发控制等多个方面。在这个项目中,开发框架选择了Spring,这是一个广泛使用的Java企业级应用...

    Java并发机制的底层实现原理.pdf

    Java并发机制的底层实现原理涉及到多个方面,包括了本地内存与线程安全的问题、volatile关键字的使用、synchronized关键字的原理以及Java并发在处理器层面是如何实现的。通过这些机制,Java能够有效地管理多线程环境...

    Java并发程序设计教程.pdf

    《Java并发程序设计教程》是一份详尽的指南,旨在帮助开发者掌握Java中的并发编程技巧。这份教程由温绍锦(昵称:温少)编写,涵盖了从基础到高级的各种并发概念和技术,对于希望深入理解并应用Java多线程机制的开发...

    java并发编程 英文版

    《Java并发编程英文版》是Doug Lea所著的一部关于Java并发编程的经典作品。Doug Lea是计算机科学领域的知名学者,尤其在并发编程、设计模式、软件工程等领域有深入的研究和独到的见解。本书在1996年首次出版,至今仍...

    java高并发秒杀api源码

    这个"java高并发秒杀api源码"很可能是一个实现这类功能的示例项目,它结合了Spring和MyBatis两大主流框架,以提升系统性能和可维护性。下面,我们将深入探讨这些关键知识点。 首先,`Spring`是一个全面的企业级应用...

    java并发编程从入门到精通

    上述提及的知识点,如线程的基本概念、并发集合、锁机制、线程池的使用、线程同步与通信的模式等,都是《java并发编程从入门到精通》这本书的前三章可能会涉及的内容。尽管这里只能提供试读版的内容,但通过阅读和...

    java抽奖系统后台 springboot+mybatis redis队列处理高并发.rar

    在构建一个基于Java的抽奖系统后台时,采用SpringBoot、MyBatis以及Redis队列来处理高并发场景是一项常见的技术选型。以下将详细介绍这些关键组件及其在抽奖系统中的作用。 1. **SpringBoot** SpringBoot是Spring...

    Java并发编程.xmind

    包含了java多线程基础介绍,多线程设计模式详解,juc包内对象详解,作为自己学习的记录,持续更新中

    java抽奖系统后台 springboot+mybatis redis队列处理高并发.zip

    在本项目中,"java抽奖系统后台 springboot+mybatis redis队列处理高并发.zip",我们可以探索几个关键的IT技术及其在构建高效抽奖系统中的应用。以下是对这些技术的详细说明: 1. **SpringBoot**: SpringBoot是...

    读书笔记:Java并发编程之美学习记录.zip

    读书笔记:Java并发编程之美学习记录

    Android-Java并发工具类库

    在Android开发中,Java并发工具类库扮演着重要的角色,特别是在多线程和异步处理的场景下。这个名为“Xiaofei-it-Concurrent-Utils-829a450”的压缩包可能包含了一些优化和扩展了Java标准并发库(java.util....

    Java高并发秒杀API

    Java高并发秒杀API是一个典型的企业级应用场景,主要用于处理大量用户在同一时间抢购限量商品的情况。在设计这样的系统时,我们需要关注多个关键知识点,包括但不限于数据库操作、并发控制、性能优化以及分布式协调...

    java并发编程代码.7z

    主要是自己学习java多线程学习的笔记记录。作为新手练手也好,作为工作三年的我,来说只是作为跳槽之前的准备,之前对于java多线程真的是一知半解,只有到这里我才发现原来是长这样的基础模型。脚踏实地的一步一步的...

    java并发编程-超级大全整理

    总结,Java并发编程涵盖了大量的概念和技术,包括线程的创建、同步、通信以及并发工具的使用。理解和掌握这些知识点,是成为一名合格的Java并发程序员的基础。在实际开发中,应结合具体场景选择合适的并发策略,以...

    Java并发编程【完结】1

    Java并发编程是编程领域中的一个重要话题,特别是在多核CPU环境下,理解和掌握并发编程技术对于提升应用程序的性能和响应速度至关重要。本课程主要关注Java平台上的并发、并行处理,包括进程与线程的概念,以及相关...

    java多线程模拟处理银行的实时转账交易

    Java提供了多种并发控制机制,如`synchronized`关键字、`Lock`接口(如`ReentrantLock`)以及`Atomic`类。这些机制可以防止数据竞争,确保转账操作的原子性。 在本项目中,`UpgradeTransferAccount`可能是核心类,...

    跟踪插装\并发错误模式的Java并发程序动态测试方法

    ### 跟踪插装并发错误模式的Java并发程序动态测试方法 #### 摘要与背景 在软件开发领域,尤其是针对并发程序的开发,确保程序的正确性与稳定性至关重要。并发程序因其多线程特性,使得在运行时产生不可预测的行为...

    Java并发编程线程入门简介[借鉴].pdf

    Java并发编程线程是Java语言的核心特性之一,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,线程是通过Java虚拟机(JVM)来管理和调度的,使得多线程编程成为可能。本文将探讨Java并发...

Global site tag (gtag.js) - Google Analytics