多线程与高并发实战指南
多线程核心知识点
线程与进程的区别
线程是CPU调度的最小单位,共享同一进程的内存空间;进程是资源分配的最小单位,拥有独立的内存地址。多线程切换开销更小,但需处理共享资源的同步问题。
线程生命周期
- 新建(New):线程对象创建但未调用
start() - 就绪(Runnable):调用
start()后等待CPU调度 - 运行(Running):获取CPU时间片执行任务
- 阻塞(Blocked):因锁、I/O等操作主动放弃CPU
- 终止(Terminated):线程执行完毕或异常退出
线程同步机制
- synchronized:JVM层面实现的互斥锁,可修饰方法或代码块
public synchronized void increment() { counter++; } - ReentrantLock:JDK提供的可重入锁,支持公平锁、条件变量
Lock lock = new ReentrantLock(); lock.lock(); try { /* 临界区 */ } finally { lock.unlock(); } - CAS(Compare-And-Swap):无锁算法,依赖CPU指令实现原子操作
AtomicInteger atomicInt = new AtomicInteger(0); atomicInt.incrementAndGet();
线程池原理
通过复用线程减少创建/销毁开销,核心参数包括:
corePoolSize:常驻线程数maximumPoolSize:最大线程数workQueue:任务队列(ArrayBlockingQueue、LinkedBlockingQueue)RejectedExecutionHandler:拒绝策略(AbortPolicy、CallerRunsPolicy)
高并发应用指南
缓存优化策略
- 多级缓存:本地缓存(Caffeine)→分布式缓存(Redis)→数据库
- 缓存一致性:采用旁路缓存模式(Cache Aside Pattern),先更新数据库再删除缓存
- 热点Key处理:本地缓存+随机过期时间,避免集中失效
数据库分库分表
- 垂直分片:按业务拆分表(如订单表、用户表分离)
- 水平分片:按哈希或范围分片(如订单ID取模)
- 分片键选择:避免跨分片查询,优先选择高频查询字段
限流与熔断
- 令牌桶算法:Guava RateLimiter控制QPS
RateLimiter limiter = RateLimiter.create(100); // 每秒100个令牌 if (limiter.tryAcquire()) { /* 处理请求 */ } - 熔断降级:Hystrix或Sentinel实现故障快速失败
@HystrixCommand(fallbackMethod = "fallback") public String api() { /* 可能失败的操作 */ }
异步化设计
- 消息队列:Kafka/RocketMQ解耦生产消费,实现削峰填谷
- CompletableFuture:Java8+的异步编程工具
CompletableFuture.supplyAsync(() -> fetchData()) .thenApply(data -> process(data)) .exceptionally(e -> handleError(e));
性能监控指标
- 线程池状态:活跃线程数、队列堆积量
- GC日志:YoungGC/OldGC频率与耗时
- 慢查询:SQL执行时间超过阈值(如500ms)
- 分布式追踪:SkyWalking/Pinpoint定位跨服务瓶颈
实践案例:秒杀系统设计
架构分层
- 接入层:Nginx负载均衡+静态资源CDN
- 服务层:库存预热+Redis原子扣减
- 数据层:MySQL行锁+最终一致性
关键代码片段
Redis库存扣减Lua脚本:
local stock = tonumber(redis.call('GET', KEYS[1]))
if stock > 0 then
redis.call('DECR', KEYS[1])
return 1 -- 成功
end
return 0 -- 失败
压测建议
- 使用JMeter模拟阶梯式并发请求
- 监控系统资源(CPU、内存、IO)饱和度
- 逐步优化至TP99<200ms
BbS.okane081.info/PoSt/1121_249269.HtM
BbS.okane082.info/PoSt/1121_718828.HtM
BbS.okane083.info/PoSt/1121_554757.HtM
BbS.okane084.info/PoSt/1121_308886.HtM
BbS.okane085.info/PoSt/1121_770387.HtM
BbS.okane086.info/PoSt/1121_750863.HtM
BbS.okane087.info/PoSt/1121_477270.HtM
BbS.okane088.info/PoSt/1121_780325.HtM
BbS.okane090.info/PoSt/1121_122312.HtM
BbS.okane091.info/PoSt/1121_025464.HtM
BbS.okane081.info/PoSt/1121_049624.HtM
BbS.okane082.info/PoSt/1121_031254.HtM
BbS.okane083.info/PoSt/1121_289748.HtM
BbS.okane084.info/PoSt/1121_541895.HtM
BbS.okane085.info/PoSt/1121_782790.HtM
BbS.okane086.info/PoSt/1121_576562.HtM
BbS.okane087.info/PoSt/1121_317465.HtM
BbS.okane088.info/PoSt/1121_498418.HtM
BbS.okane090.info/PoSt/1121_803458.HtM
BbS.okane091.info/PoSt/1121_805831.HtM
BbS.okane092.info/PoSt/1121_564159.HtM
BbS.okane093.info/PoSt/1121_879166.HtM
BbS.okane094.info/PoSt/1121_119858.HtM
BbS.okane095.info/PoSt/1121_178036.HtM
BbS.okane096.info/PoSt/1121_753274.HtM
BbS.okane097.info/PoSt/1121_875638.HtM
BbS.okane098.info/PoSt/1121_929167.HtM
BbS.okane099.info/PoSt/1121_817981.HtM
BbS.okane100.info/PoSt/1121_115565.HtM
BbS.okane101.info/PoSt/1121_340028.HtM
BbS.okane092.info/PoSt/1121_277325.HtM
BbS.okane093.info/PoSt/1121_770728.HtM
BbS.okane094.info/PoSt/1121_077720.HtM
BbS.okane095.info/PoSt/1121_537812.HtM
BbS.okane096.info/PoSt/1121_285809.HtM
BbS.okane097.info/PoSt/1121_932651.HtM
BbS.okane098.info/PoSt/1121_451665.HtM
BbS.okane099.info/PoSt/1121_686826.HtM
BbS.okane100.info/PoSt/1121_043499.HtM
BbS.okane101.info/PoSt/1121_891406.HtM
BbS.okane092.info/PoSt/1121_971190.HtM
BbS.okane093.info/PoSt/1121_775253.HtM
BbS.okane094.info/PoSt/1121_111519.HtM
BbS.okane095.info/PoSt/1121_910014.HtM
BbS.okane096.info/PoSt/1121_711893.HtM
BbS.okane097.info/PoSt/1121_821993.HtM
BbS.okane098.info/PoSt/1121_201975.HtM
BbS.okane099.info/PoSt/1121_029609.HtM
BbS.okane100.info/PoSt/1121_367843.HtM
BbS.okane101.info/PoSt/1121_028648.HtM
BbS.okane092.info/PoSt/1121_240190.HtM
BbS.okane093.info/PoSt/1121_075802.HtM
BbS.okane094.info/PoSt/1121_173581.HtM
BbS.okane095.info/PoSt/1121_068639.HtM
BbS.okane096.info/PoSt/1121_608471.HtM
BbS.okane097.info/PoSt/1121_695234.HtM
BbS.okane098.info/PoSt/1121_470392.HtM
BbS.okane099.info/PoSt/1121_738689.HtM
BbS.okane100.info/PoSt/1121_337061.HtM
BbS.okane101.info/PoSt/1121_366885.HtM
BbS.okane092.info/PoSt/1121_040462.HtM
BbS.okane093.info/PoSt/1121_715991.HtM
BbS.okane094.info/PoSt/1121_890842.HtM
BbS.okane095.info/PoSt/1121_969562.HtM
BbS.okane096.info/PoSt/1121_284570.HtM
BbS.okane097.info/PoSt/1121_321889.HtM
BbS.okane098.info/PoSt/1121_659993.HtM
BbS.okane099.info/PoSt/1121_434196.HtM
BbS.okane100.info/PoSt/1121_148560.HtM
BbS.okane101.info/PoSt/1121_143738.HtM
BbS.okane092.info/PoSt/1121_417182.HtM
BbS.okane093.info/PoSt/1121_919406.HtM
BbS.okane094.info/PoSt/1121_580701.HtM
BbS.okane095.info/PoSt/1121_733829.HtM
BbS.okane096.info/PoSt/1121_609431.HtM
BbS.okane097.info/PoSt/1121_459331.HtM
BbS.okane098.info/PoSt/1121_381470.HtM
BbS.okane099.info/PoSt/1121_366503.HtM
BbS.okane100.info/PoSt/1121_821119.HtM
BbS.okane101.info/PoSt/1121_720490.HtM
查看10道真题和解析