AG
// авто стало в очередь
new Thread(() -> {
long start = System.currentTimeMillis();
int maxWait = 10_000;
long end = start+maxWait;
while (true) {
if (isFree) {park(); break;} // если освободилось место, то припарковаться
if (System.currentTimeMillis() > end) {finishStandingInTurn(); break;} // если авто ждет слишком долго, то уходим из очереди
Thread.sleep(300); // задержка, чтобы проверял каждые 0.3 секунды
}
}).start();