Mam takie zadanie:
Jest most o długości d i nośności w. Na niego będą wjeżdżać auta, a każde z nich ma być reprezentowane przez osobny wątek, auta mają swoją wagę i długość. Pojazdy przed wjazdem mają się kolejkować (wszystkich nie może być więcej niż 25), przy odpowiednich warunkach wjeżdżać na most (musi być wolne miejsce i nie można przekroczyć nośności), poruszać się po nim (nie można wyprzedzać, auta jada tylko w jedna stronę oraz z tego mostu zjeżdżać i kończyć swój żywot. Mogą być to metody
enter()
,move()
iexit()
klasySamochod
.
Proszę o pomoc, bo nawet nie jestem w stanie stworzyć konceptu, na razie pomysł miałem taki.
Klasa Bridge
(przechowuje wszystkie zmienne związane z mostem, wie ile jest aktualnie pojazdów sume ich mas itd)
Klasa Car
dziedziczącą po Thread
(osobne watki reprezentujace auta, kazdy z nich ma dostep do Bridge ktory jest jeden i probuje z nim się komunikować)
Klasa BridgeSimulation
która jest nadrzędna, generuje watki i dodaje je do kolejek.
no i tak, generujemy wątki i dajemy je do BlockedQueue
z ograniczonym rozmiarem do 25
Gdy wątek jest pierwszyw kolejce odpalamy go poprzez .start()
Próbuje wjechać na most, gdy jest to możliwe to na niego wjeżdza //enter()
Przemieszcza sie po nim nie wjezdzajac w inne auta //move()
gdy dojedzie do konca to umiera //exit()
Gdy próbowałem robic ten kod, uzywać synchornized
to kończyło się tak, że albo nic nie wjeżdzało na most, albo przesuwało się jedno auto a dopiero potem kolejne, nie mam też pojecia jak zrobić tak, żeby kilka auto przejeżdżało po moscie, patrzac na siebie czy ze soba nie koliduja. (można np. zrobic tablice i sprawdzac pozycje, ale nie wiem jak synchornizować te wątki)