用无界队列做缓冲,任务只会一直排队不拒绝,最后把内存吃满,表现是响应越来越慢。
队列要设容量,满了就走拒绝策略,让调用方快速失败,比拖垮整个进程要好。
再按业务把线程池隔离,别让慢任务占着核心线程把别的接口一起拖死,队列深度要加监控。
// 有界队列 + 拒绝策略
new ThreadPoolExecutor(8, 16, 60, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(200),
new ThreadPoolExecutor.AbortPolicy());
THE END






暂无评论内容