1.多把锁
如果对象中的方法是不相干的,此时只有一个对象锁,并发度很低;
解决办法:准备多个不相干的对象锁。
将锁的粒度细分
好处:增强并发度
坏处:当一个线程需要多把锁的时候,容易出现死锁
2.死锁

示例代码:

检索死锁的软件:Jconsole
3.活锁
两个线程互相改变对方的结束条件,最后谁也无法结束。
4.饥饿
一个线程由于优先级太低,始终得不到CPU调度执行,也不能够结束。
在解决死锁的时候使用顺序加锁的方法,即线程获取锁的时候必须按照锁的顺序来获得,这样可以避免死锁;但是顺序加锁容易导致饥饿问题。