如今測試不一樣線程下的表現(時間單位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的使用簡單點 測試