我是多线程新手,想测试方法与块级同步的性能(期望块级同步具有更好的性能)。
我的方法级别同步
public synchronized void deposit (double amount) {
//random calculations to put more load on cpu
int k=0;
for(int i=0; i<5 ;i++){
k=(k+i)*10000;
}
this.balance = this.balance + amount;
}
vs我的块级同步
public void deposit (double amount) {
//random calculations to put more load on cpu
int k=0;
for(int i=0; i<5 ;i++){
k=(k+i)*10000;
}
synchronized (this) {
this.balance = this.balance + amount;
}
}
我原本以为块级同步的性能会更快,但实际上会更慢。在几次运行中,性能是相同的,但总体而言,它比方法级同步慢了0.2秒。
为什么变慢?