概括总结
在一个public static
的方法上加上synchronized
关键字以后,相当于回到了单线程的状态,性能直线下降93.61%,一夜回到解放前。
007版本更新说明
在原来的submitOrder
方法之上增加了一个submitOrderSynchronized
方法,在测试时,分别调用这两个方法,统计耗时。
/** 同步提交订单 */
public static synchronized void submitOrderSynchronized(省略参数若干) throws Exception {
submitOrder(省略参数若干); // 调用真实的提交订单的方法
}
/** 提交订单 */
public static void submitOrder(省略参数若干) throws Exception {
// 省略真实提交订单的代码
}
测试结果
统计10次测试之后的平均值之后:
调用submitOrder
方法时,每秒钟可以提交的订单数为:141
调用submitOrderSynchronized
方法时,每秒钟可以提交的订单数为:9
性能下降比例: (141 - 9) / 141 * 100% = 93.61%
【备注】:不同的机器上的测试结果会不一样,以上测试结果仅供参考。
补充说明
在正常项目中开发时,不可能把一个提交订单的方法设置为public static
的,所以这一版本的测试仅仅只是个示例,只是出于好奇想看看结果是怎样的,没有任何参考价值。
源码
007版本的github源码在这里,
如果不知道怎样运行项目,请参考这里