多线程与高并发实战指南

多线程核心知识点

线程与进程的区别
线程是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定位跨服务瓶颈

实践案例:秒杀系统设计

架构分层

  1. 接入层:Nginx负载均衡+静态资源CDN
  2. 服务层:库存预热+Redis原子扣减
  3. 数据层: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

#牛客AI配图神器#

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务