Wpis z mikrobloga

Tym razem nietypowo.
W pewnej firmie tworzono aplikację wielowątkową. W wielu klasach stosowano następujący wzorzec:
- blokady są numerowane, żeby zapobiec deadlockom (zawsze synchronizowanie kolejno na LOCK1, LOCK2,...)

public class Main {

private static final Logger LOG = LoggerFactory.getLogger(Main.class.getName());
private static final String LOCK1 = "LOCK1";
private static final String LOCK2 = "LOCK2";

public void foo() {
synchronized (LOCK1) {
LOG.trace("Synchronized by: {}", LOCK1);
//...kod
synchronized (LOCK2) {
LOG.trace("Synchronized by: {}", LOCK2);
//...kod
}
}
}
//..kod
}
#javapuzzle #java

Czy z takim rozwiązaniem jest wszystko ok (biorę po plusie i zapraszam do głosowania i dyskusji)

  • Tak, nie widzę problemu. 12.5% (2)
  • Uuuu Panie, kto to panu tak spierdolił? 87.5% (14)

Oddanych głosów: 16

  • 5
@63274682374: wrzucaj wyjasnienie zeby inni sie dowiedzieli co sie tu dzieje (z static / bez / co sie stanie gdy sie zamieni na new String()). Do dupy takie zagadki gdzie wrzucasz ankiete i elo.
@afe1: Poprzednie zagadki to były kilkulinijkowe kody, które sobie można samemu sprawdzić online minimalnym wysiłkiem. W tym wypadku raczej też nie jest potrzebne IDE do sprawdzenia co by było gdyby...
Jak ktoś chce się czegoś nauczyć to niech chociaż odpali kod i ewentualnie zada konkretne pytanie, a nie "dej mi odpowiedzi i wszystkie kombinacje bo inaczej ankieta do dupy".