- 博客(3)
- 收藏
- 关注
原创 ThreadPoolExecutor线程池问题排查:线程池设置不合理导致future.get()阻塞
一、业务背景有一个接口的部分功能使用了线程池,这个功能放在线程池里和主线程并行执行,等线程池里的任务执行完通过future.get的方式(如果需要得到线程池里的线程执行结果,使用future的方式)获取线程池里的线程执行结果,然后合并到主流程的结果里返回给前端。业务场景很简单,目的是不影响主流程的性能,不增加整体响应时间。但是遇到了设计的逻辑错误。设计场景:I/O密集型(大部分业务都是通过调用接口实现的) 核心线程数:4核(cpu核数) 最大线程数:cpu核数*2 等待队列:2048二、相关
2020-12-16 18:20:37 7129
原创 Java并发: 监视器Monitor、等待/通知机制原理解析
问题描述:如果在当前线程持有锁时调用Thread.sleep则可能导致性能和可伸缩性问题,因为持有锁的线程的执行被冻结。最好对monitor对象调用wait来暂时释放锁并允许其他线程运行Monitor介绍:Monitor是一种用来实现同步的工具 与每个java对象相关联,即每个java对象都有一个Monitor与之对应 Monitor是实现Sychronized(内置锁)的基础Monitor的基本结构:Owner字段:初始时为NULL表示当前没有任何线程拥有该monitor record.
2020-12-14 18:16:45 978
原创 代码规范扫描的一些案例
一、sonar代码规范扫描1.1、提示Use try-with-resources or close this "XXX" in a "finally" clause(1)案例1:问题描述:提示我们用java7的try-with-resources模式处理流,免去手动在finally里close等繁琐流程问题解决:例如可以这样try (InputStream inputStream = f.downloadFile(fileName); OutputStre
2020-12-02 16:46:51 1325 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人