[Java] [Java并发] [Java并发时锁优化技巧及注意事项,常见错误]

Java锁优化技巧

1、减少锁的持有时间
持有时间越短,竞争越短,并发越多,越快
2、减小锁的粒度
类似1吧,切入点不同,作用对象、区域粒度越小,竞争时间越短,并发越快
3、锁分离
经典套路,读写锁分离,内存访问区域分离,避免扎堆
4、锁粗化
反向优化,合并过度细化的锁粒度
5、锁消除
编译期锁消除(如逃逸分析后锁优化),JVM运行期的锁优化,有偏向锁,轻量级锁,自旋锁
6、ThreadLocal
7、常见错误
7.1 自动拆箱对象不能作为同步对象
static Integer i; synchronized(i){i++} 是无效的
7.2 被多线程全局访问的工具类对象,应当使用ThreadLocal加持
static ThreadLocal tl=new ThreadLocal();
… …
if(tl.get()==null){tl.set(new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”));}Date t=tl.get().parse(“2015-03-29 19:29:”+i%60);

猜你喜欢

转载自blog.csdn.net/Hendy_Raw/article/details/88931734