Допустим, у меня есть метод:
public void run(){
synchronized(this.foo){
}
}
, но иногда, когда я запускаю этот метод, мне не нужно ничего синхронизировать.
Что такое хороший шаблон для условной синхронизациина что-то?Единственный шаблон, который я могу придумать, это обратный вызов, что-то вроде этого:
public void conditionalSync(Runnable r){
if(bar){
r.run();
return;
}
synchronized(this.foo){
r.run();
}
}
public void run(){
this.conditionalSync(()->{
});
}
Есть ли другой способ сделать это, без обратного вызова?