如今测试不一样线程下的表现(时间单位ms): 多线程
1 | 10 | 50 | 100 | 500 | 1000 | 5000 | |
synchronized | 542 | 4894 | 4667 | 4700 | 5151 | 5156 | 5178 |
lock | 838 | 1211 | 821 | 847 | 851 | 1211 | 1241 |
能够看到,在多线程环境并存在大量竞争的状况下,synchronized的用时迅速上升,而lock却依然保存不变或增长不多。 性能
Lock是用CAS来实现的
JDK 1.6以上synchronized也改用CAS来实现了,因此二者性能差很少
Lock提供的功能丰富点,synchronized的使用简单点 测试