Jeśli mam kilka właściwości zmienne w obiekcie, który będzie działać na kilka wątków, rozumiem, że powinny one być zsynchronizowane.Java. Jak poprawnie synchronizować pobierające i ustawiające?
class Doggie {
private String name;
private int age;
public void setName(String name) { this.name = name; }
public String getName() { return this.name; }
public void setAge(int age) { this.age = age; }
public int getAge() { return this.age; }
}
Pytania:
- Czy nie
return
i przyporządkowanie operacje atomowe w Java? - Ponieważ właściwości niekoniecznie muszą być ze sobą powiązane, synchronizacja z tą samą blokadą nie zawsze ma sens. Jak zorganizować strukturę blokującą?
- Czy lepiej jest zabrać ze sobą wewnętrzną blokadę lub prywatny wzór blokady obiektu?
Co osiągnęłaby synchronizacja? Nawet jeśli można zagwarantować, że jeden wątek jest właścicielem funkcji setName(), gdy jest ona w tym miejscu, to po jej zakończeniu nic nie wskazuje na to, że inny wątek nie może natychmiast wykonać innego setName() przed pierwszym wywołaniem wątku getName(). Nigdy nie będziesz w 100% pewien stanu. –