数据结构和线程池

1.List

List<String> list = new ArrayList<>(); 并发读写时,会抛出异常(Java.util.ConcurrentModificationException)

= new vector<>(); 读写操作都加了锁,但性能不理想

= new CopyOnWriteArrayList<>(); 并发读写不会异常,使用写时复制技术

读:并发

写:串行

ArrayList:线程不安全

Vector:线程安全

CopyONWriteArrayList:(以空间换时间)在写操作时,会复制一份数据数组,加锁,写操作完成后,指针指向新数组;读操作不加锁,并发执行

transient:关键字, 它声明的对象不参与序列化

2.set

Set<String> set = new HashSet<>(); 读写并发抛异常(Java.util.ConcurrentModificationException)

=Collections.synchronizedSet(new HashSet<>()); 读写并发不抛异常,但性能不理想

= new CopyOnWriteArraySet<>(); 不抛异常,性能高,以空间换时间

set:无序,不重复,用迭代器遍历

3.Map

Map<String,String> map = new HashMap<>(); 读写并发时异常(Java.util.ConcurrentModificationException)

= new HashTable<>(); 不抛异常,但性能不佳

= new ConcurrentHashMap<>(); 锁分段技术

map:不能用迭代器

HashMap:数组(key,由hashcode对数组取模获得,以便于快速查找)+链表+红黑树(数组长度大于64,链表长度大于8)

HashMap:线程不安全,并发时,报错 java.util.ConcurrentModificationException

HashTable:线程安全

ConcurrentHashMap:锁分段技术,为key分段加锁(将所有key分成很多段,每一段都加锁)

Robbon:微服务 (客户端)负载均衡

线程池

创建线程池用,不能用

线程池和数据库连接池都属于"池技术",复用、高通用性、解决创建不易;管理功能:避免过多创建线程

复用、管理

线程池结构:

1.等待队列:来不及处理的任务

2.核心线程:即使空闲也不会释放

3.非核心线程:空闲时间达到阈值就会释放

4.拒绝策略:线程池内线程已达最大线程数,全部线程都很繁忙,等待队列已满

拒绝策略(4种):

new ThreadPoolExecutor.AbortPolicy() 中断策略,线程池处理不过来时,启动策略,抛出异常(Java.util.concurrent.RejectedException)

new ThreadPoolExecutor.CallerRunsPolicy() 把任务还给调用者(主线程)

new ThreadPoolExecutor.DiscardPolicy() 随即丢弃处理不了的任务

new ThreadPoolExecutor.DiscardOldestPolicy() 丢弃等待时间最久的任务

相关推荐
wuminyu1 小时前
JVM规范学习总结:解释器与JIT编译器如何处理JVM字节码
java·linux·c语言·jvm·c++
txxzjmzlh2 小时前
SpringBoot 配置⽂件
java·spring boot·spring
Wang's Blog2 小时前
Java 项目实战: 交友项目 - 搜索附近的功能概述和分析
java·开发语言·交友
骑着蜗牛撵大象3272 小时前
大模型 Agent 的沙箱护栏:gVisor 隔离、出口白名单与审计闭环
java·开发语言·jvm·安全·agent沙箱·gvisor·microvm
独泪了无痕2 小时前
Hutool之LocalDateTimeUtil:让时间间隔操作如虎添翼
java
三无少女指南4 小时前
从这里开始:Java 后端与 AI 工程的三条阅读路线
java·学习路线·ai工程
香蕉大香蕉(06敬畏市场)4 小时前
MySQL 单点详解(07)
java·数据库·mysql·ai·博客·八股
nice_lcj5204 小时前
深入理解 Java 反射:从 Class 对象到方法调用(含性能实测 + 迷你 IOC 实战 + 面试考点)
java·开发语言·后端·面试
骑着蜗牛撵大象3275 小时前
2026 后端 AI 工程化:Spring AI 管调用、MCP 管工具、Agent 内嵌管自治
java·人工智能·后端·spring·ai·可观测性·mcp
tryxr5 小时前
JVM 垃圾回收机制
java·jvm·gc·垃圾回收