Witam!

Mam do napisania program w którym to są ludziki (wątki), sklepy oraz drogi. Mechanika działania ma wyglądać następująco: ludziki poruszają się po drogach łączących sklepy. Ograniczeniem jest jednak to, że na danej drodze może znajdować się w jednym momencie jeden ludzik.
Moje pytanie dotyczy tego w jaki sposób ma wyglądać lockowanie obiektu drogi na czas poruszania się ludzika będącego wątkiem po drodze: moje pomysły są następujące w klasie Drogi będę trzymał zmienną typu Lock, a ludzik będzie trzymał referencje do wszystkich dróg.
W momencie w którym będzie chciał wejść na drogę to po prostu z klasy ludzika odpali się kod tego typu:

drogaList[indexKonkretnejWybranejDrogi].lock(); //w ciele metody lock() wykona się zablokowanie obiektu drogi przeciwdziałające "wywłaszczeniu" drogi na rzecz innego wątku aż do momentu przejechania przez drogę naszego ludzika - wtedy droga zostanie zwolniona - unlock() )
this.przejedzWybranaDroge();
drogaList[indexKonkretnejWybranejDrogi].unlock();

Prosiłbym o komentarze do mojego podejścia oraz na temat tego jak takie problemy rozwiązuje się profesjonalnie...

Dzięki