![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
getUserById
这个作者很懒,什么都没留下…
展开
-
@Scheduled 定时任务中断BUG
经过查看发现该方法内手动new了一个restTemplate并且未设置超时时间。发现线程状态是RUNNABLE,从日志分析与restTemplate有关。生产环境出现了BUG经过排查某个定时任务中的逻辑并未被执行。判断为某次连接因网络波动未收到信号导致其一直处于阻塞状态。jstack查看日志。原创 2022-10-11 20:34:41 · 543 阅读 · 1 评论 -
关于整合sharding的动态数据源碰到的AOP内部调用失效BUG
业务:需要整合sharding并且做到多个数据源多个线程之间切换。实现:使用spring的AbstractRoutingDataSource,在指定切面中根据ThreadLocal内存储的数据源切换。问题:其中类class1此类继承的base类拥有Threadlocal属性用以存放指定数据源信息并通过切面切换数据源,切面为类1所有方法。class1方法method1需要启动一个新线程thread1,但此时该方法method1方法内部又新建了一个线程thread2,thread2中run()方原创 2021-04-23 21:13:03 · 252 阅读 · 0 评论 -
关于@Transactional注释的方法中使用Synchronized代码块失效的问题
对@Transactional了解不深,导致了在开启了事务的方法中使用了synchronized代码块,此时同步代码将失去意义.场景: 如锁定库中某条数据,使多线程竞争安全的情况下使用同步代码块原因:锁定操作因事务未提交也并未及时做出锁定.解决方法:1.不使用数据库操作锁定数据 比如缓存锁定数据2.将同步代码块封装为普通方法放在其他类中来达到拆分为两个事务的效果,调用时使用synchronized关键字调用即可达到预期效果...原创 2021-02-03 10:43:01 · 374 阅读 · 0 评论 -
SpringBoot服务间依赖 扫描springbean问题
最近项目需要将两个服务合并为一个,副服务打成jar包由主服务依赖碰到了扫描不到bean的问题解决方法:使用springboot的自动装配配合@componetScan注解扫描整个第三方jar包在副服务最外层包创建一个Scanner类,打上@Configuration注解并在resources目录下创建 META-INF\spring.factories 注意META-INF目录也要创建,并...原创 2020-04-10 17:09:50 · 663 阅读 · 0 评论 -
悲观锁、乐观锁、分段锁自我理解
java中sychronized锁为悲观锁,未获得锁则阻塞线程,线程挂起与运行中需要性能开销CAS乐观锁 compareAndSwap ,获得锁失败则自旋,有重试次数,在竞争激烈的情况下性能不如悲观锁,jdk8引入了Longadder 分段锁,原理是在竞争激烈的情况下,在cells数组中空的位置进行CAS操作,最后相加获得结果,cells数组初始大小为2,每次扩容2倍,直至超过cpu核心数...原创 2019-12-11 15:55:11 · 263 阅读 · 0 评论 -
HashMap
最小元素是 Node键值对table长度默认为1<<4,加载因子默认0.75,最大容量1<<30,由链表转为树的阈值为8,转换为红黑树最小容量为64,小于则继续扩容之所以长度为2n次方是为了确认table索引位置 key.hashcode&(length-1) 代替取模运算,效率更高...原创 2019-12-05 17:36:13 · 64 阅读 · 0 评论