static methods i class – kilka pytań i wątpliwości

0
  1. Dobrze rozumiem, że statyczna wewnętrzna klasa nie jest współdzielona przez wszystkie instancje klasy zewnętrznej. W tym wypadku może ona przechowywać stan dla danej instancji obiektu zewnętrznego? (static ma tu inne znaczenienie niż dla zmiennej/ metody)

  2. Mam metodę statyczną Z::y(B b, C c) wołaną z metody klasy niestatycznej A::aa(). Klasa Z to typowy Util.
    Metoda statyczna y zaczytuje parametr z pliku do zmiennej lokalnej dla tej metody. Czy nie ma tu ryzyka, że przy wielu wywołaniach metody y, wartośc tego parametru zaczytanego z pliku będzie niepoprawna? Jesli nie, to dlaczego?

0

Ad. 2. Jeśli do metody Z::y nie dostajesz się z kilku wątków, to nic złego się nie stanie. Z::y zacznie się i skończy. Także nic w między czasie nie zmieni Ci zmiennej lokalnej. Natomiast jeśli do Z::y dostajesz się z kilku wątków, to musisz posłużyć się jakimś mechanizmem synchronizacji. Nie znam na tyle Javy, żeby powiedzieć Ci, jakie są tam mechanizmy synchronizacji, ale na pewno jak poszukasz w google; "Java critical section" to znajdziesz.

@Shalom: dał lepszą odpowiedź

0
  1. Zmienna lokalna jest lokalna i tyle. Nic nie moze jej przypadkiem zmienić. Żeby cokolwiek się z nia stało to musiałbyś explicite posłać tą zmienną do jakiegoś innego wątku który mógłby coś z nią zrobić. Zmienne maja coś takiego jak "scope" i nie da się ot tak dobrać do zmiennej lokalnej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1