ReentrantLock使用

ReentrantLock能做到synchronized得功能,而且在JDK1.6以前性能比后者好很多。之后synchronized性能进行了改进,差距已经不是很大。

阅读全文>>

共享变量的并发安全性

线程通信模型大体可分为两种,共享变量和消息传递。虽然消息传递(Actor模型)是比较被推崇的,但是Java语言并不支持。所以在并发程序中我们必须要面对共享变量所带来的编程复杂度。

阅读全文>>

正则表达式灾难性回溯

运营反馈问题,日志排查中发现线上有个任务一直没有执行.工具脚本看出基本上CPU都消耗在正则表达式上面了.无疑是进入正则表达式的回溯陷阱.

阅读全文>>

随机数阻塞问题

有个使用了SpringBoot的API的项目拆分了不同业务的服务,一个jar包通过不同的命令行来启动不同的10个业务进程.所以发布版本的时候基本上是重启所有的进程. 偶然的一次线上发布看业务日志,发现进程启动的时候卡在tomcat embeded初始化的时候.而且基本上重启的进程都卡住了.

阅读全文>>

高效定位Java进程高CPU问题

线上环境某个业务无端卡住,死锁或者CPU使用率突然飙得很高.通常情况下是某些线程下的代码作祟.如何排查到指定线程和指定代码.

阅读全文>>