Java - метод производительности параллелизма против синхронизации на уровне блоков - PullRequest
0 голосов
/ 01 февраля 2019

Я новичок в многопоточности и хотел проверить производительность метода по сравнению с синхронизацией на уровне блоков (ожидаю, что синхронизация на уровне блоков будет иметь лучшую производительность).

Моя синхронизация на уровне методов

 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;
}

против моей синхронизации на уровне блоков

 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 секунды медленнее, чем синхронизация на уровне метода.

Почему это медленнее?

...