У вас есть несколько способов синхронизации доступа к методу.
Один выглядит лучше другого в соответствии с требованием синхронизации.
Это безопасная практика?
Это безопасная практика, если она используется для подходящего варианта использования.
Здесь синхронизация имеет смысл, поскольку она блокирует someObject
, который оба метода выполняют для них модификации.
Да, вы можете синхронизировать на this
или синхронизировать целые методы, такие как:
public class ClassA {
private ClassB someObject = new ClassB();
public void FuncA() {
synchronized(this) {
//change some field of someObject
}
}
public void FuncB() {
synchronized(this) {
//change some field of someObject
}
}
}
но они могут заблокировать весь объект, хотя это может и не потребоваться.