一、上下文切换问题
大量 线 程 竞 争 锁时 ,会引起CPU频繁的上下文切 换。、
解决方法:
1.使用无锁算法,例如CAS
2.将处理的数据细粒度化,减少锁竞争,例如Mysql的页锁,行锁
3.避免创建大量线程,创建线程后及时销毁,例如线程池的应用
4.使用协程,例如使用协程库Quasar
处理方案:通过 jstack jconsle 等命令或工具查看是否有大量线程wait并处理
二、死锁问题
产生死 锁 ,会造成系 统 功能不可用
解决方法:
1.避免一个线程同时获取多个锁
2.避免一个线程在锁内同时占用多个资源
3.尝试使用定时锁
4.将释放锁操作加入finally块中
5.对于数据库锁,加锁和解锁必须在一个数据库连接里
处理方案:dump线程查看是否有死锁情况出现