锁不是问题的根源,锁之间的竞争才是 通常在多线程的代码中遇到性能方面的问题时,一般都会抱怨是锁的问题.毕竟锁会降低程序的运行速度和其较低的扩展性是众所周知的.因此,如果带着这种“常识”开始优化代码,其结果很有可能是在之后会出现讨人厌的并发问题. 因此,明白竞争锁和非竞争锁的不同是非常重要的.当一个线程试图进入 另一个线程正在执行的同步块或方法时会触发锁竞争.该线程会被强制进入等待状态,直到第一个线程执行完同步块并且已经释放了监视器.当同一时间只有一个线 程尝试执行同步的代码区域时,锁会保持非竞争…