Здравствуйте всем!
У меня возник вопрос, ответ на который никак не могу найти на просторах интернета.
public class Solution {
int var1;
int var2;
int var3;
int var4;
private final Object o = new Object();
private final Object p = new Object();
public Solution(int var1, int var2, int var3, int var4) {
this.var1 = var1;
this.var2 = var2;
this.var3 = var3;
this.var4 = var4;
}
public int getSumOfVar1AndVar2() {
synchronized(o) {
return var1 + var2;
}
}
public int getSumOfVar3AndVar4() {
synchronized(p) {
return var3 + var4;
}
}
public static void main(String[] args) {
}
}
В данном решении есть блок синхронизации
public int getSumOfVar1AndVar2() {
synchronized(o) {
return var1 + var2;
}
Что он делает понимание есть (я так думаю), но вот для чего мы указываем в скобках объект "о" не понятно. Везде расписано для того чтобы 2 нити не могли получить одновременный доступ к данному блоку кода, но зачем синхронизация по объекту?package com.javarush.task.task26.task2608;
/*
Мудрый человек думает раз, прежде чем два раза сказать
*/
public class Solution {
int var1;
int var2;
int var3;
int var4;
public Solution(int var1, int var2, int var3, int var4) {
this.var1 = var1;
this.var2 = var2;
this.var3 = var3;
this.var4 = var4;
}
public synchronized int getSumOfVar1AndVar2() {
return var1 + var2;
}
public synchronized int getSumOfVar3AndVar4() {
return var3 + var4;
}
public static void main(String[] args) {
}
}