synchronizowane metody

synchronizowane metody
MI
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 9 lat
  • Postów:199
0

Cześć ;)
Założmy, że mamy napisaną klasę listy, w której wszystkie metody są synchronizowane.
Rozważmy następującą sytuację:
Mamy sto wątków działających współbieżnie.
Lista ma jeden element. Wątek pierwszy chce coś usunąć z listy. Zatem sprawdza if-em czy jest pusta. Dostaje odpowiedź, że nie, zatem uzyskuje zgodę na usunięcie. W tym samym momencie może się zdarzyć, że inny wątek ściągnie z listy element. I tamten pierwszy będzie ściągał z pustej listy.
Jak się zabezpieczyć?
P.S.
I wiem o wszelkiej maści synchronizowanych listach oferowanych przez JAVĘ, ale jak widać, stoję przed problemem, który warto byłoby umieć rozwiązać, a nie, że zastosuję gotowca a nie wiem jak działa

edytowany 1x, ostatnio: mielony
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

? Cała operacja, czyli zarówno sprawdzenie jak i usuwanie musi być w sekcji krytycznej. Musisz się synchronizować na tej liście w odpowiednim miejscu.

Kopiuj
synchronized(lista){
// bla bla
} 

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.