并发编程注意事项

一、上下文切换问题

大量 线 锁时 ,会引起CPU频繁的上下文切 换。、

解决方法:

1.使用无锁算法,例如CAS

2.将处理的数据细粒度化,减少锁竞争,例如Mysql的页锁,行锁

3.避免创建大量线程,创建线程后及时销毁,例如线程池的应用

4.使用协程,例如使用协程库Quasar

处理方案:通过 jstack jconsle 等命令或工具查看是否有大量线程wait并处理

二、死锁问题

产生死 ,会造成系 功能不可用

解决方法:

1.避免一个线程同时获取多个

2.避免一个线程在内同占用多个

3.尝试使用定时锁

4.将释放锁操作加入finally块中

5.对于数据库锁,加和解在一个数据库连接里

处理方案:dump线程查看是否有死锁情况出现

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值