2026暑期实习备战笔记

知识清单 | 技术笔记 | 项目笔记 | 面经记录

ThreadLocal

ThreadLocal 提供了一种线程级别的数据存储机制。每个线程都拥有自己独立的 ThreadLocal ,意味着每个线程都可以独立地、安全地操作这些变量,而不会影响其他线程。

而且Spring其实属于 ThreadLoca l的重度用户,比如Spring 的 声明式编程魔法(@Transactional、@Secured、@RateLimit)底层全靠 ThreadLocal 隐式传参 —— 让框架能在线程任意深度拿到上下文,而你的业务代码保持干净。

阅读全文 »

线程安全

线程安全的核心是:在多线程并发访问共享资源(变量、对象、文件等)时,程序的执行结果始终符合预期,且不会出现数据错乱或逻辑错误。

其根源在于以下三个层面的问题:

  • 原子性:操作是否不可分割。要么全部执行成功,要么全部不执行,不存在中间状态被其他线程看到。
  • 可见性:线程对共享变量的修改是否对其他线程立即可见。由于 CPU 缓存和寄存器的存在,一个线程的修改可能不会马上同步到主内存。
  • 有序性:代码执行顺序是否可能被编译器和 CPU 重排序。在保证单线程结果不变的前提下,指令可能会被优化重排,导致多线程下执行顺序与代码顺序不一致。
阅读全文 »

线程池

使用线程池的好处

  • 资源管理:控制并发线程数量,防止资源耗尽
  • 线程复用:避免频繁创建/销毁线程的开销,提高响应速度

ThreadPoolExecutor 七大参数

1
2
3
4
5
6
7
8
9
public ThreadPoolExecutor(
int corePoolSize, // 核心线程数
int maximumPoolSize, // 最大线程数
long keepAliveTime, // 临时线程存活时间
TimeUnit unit, // 时间单位
BlockingQueue<Runnable> workQueue, // 任务阻塞队列
ThreadFactory threadFactory, // 线程工厂
RejectedExecutionHandler handler // 拒绝策略
)
参数 说明 注意事项
corePoolSize 常驻核心线程数,即使空闲也保留 设置过小会导致任务堆积,过大浪费资源
maximumPoolSize 线程池最大容量,包含临时线程 必须 ≥ corePoolSize
keepAliveTime 非核心线程空闲后的存活时间 设置合理避免频繁创建销毁
workQueue 存放待执行任务的队列 常用 LinkedBlockingQueueArrayBlockingQueueSynchronousQueue
threadFactory 创建线程的工厂 建议自定义命名,方便排查问题
handler 拒绝策略 默认 AbortPolicy,生产环境建议自定义
阅读全文 »
0%