Мне нужна помощь в исправлении части этого кода, я пытался создать сообщение за другим в многопоточности java, но он не работает, что я могу сделать? - PullRequest
0 голосов
/ 08 мая 2020

это отдельный класс, цель состоит в том, чтобы пассажиры go из аэропорта в A, а затем в B, а затем обратно в аэропорт, но когда пассажиры хотят go вернуться в аэропорт из B чаще всего кажется, что они прибыли в аэропорт, а затем появляется другое сообщение о том, что они возвращаются в аэропорт, что я могу сделать? Может показывать и другие классы

   public void run() {
                    try {
                        Thread.sleep(new Random().nextInt(50)); //time till it gets to the airport
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println("The " + currentThread().getName() + " started the trip with " + numPeople + " passangers!");

                    try {
                        Thread.sleep(new Random().nextInt(100));  //time till it gets to A
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    ms.addGuiaCondutor(this);

                    synchronized (obj) {
                        try {
                            obj.wait();
                        } catch (InterruptedException e1) {
                            e1.printStackTrace();
                        }
                    }

                    try {
                        Thread.sleep(100); //time till it gets to B
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    fd.addGuiaCondutor(this);

                    try {
                        Thread.sleep(500); //time till it gets to the airport
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println("O " + currentThread().getName() + " arrived at the airport!");
                    ga.guiasCondutores.remove(this);

                }

Чтобы лучше понять, это результат, который я получаю, игнорируя все остальные, посмотрите на Driver1

Client 1 is in queue
Client 2 is in queue
Client 3 is in queue
Client 4 is in queue
Client 5 is in queue
Client 6 is in queue
Driver 1 was called to the airport driving: Bus 
Driver 1 is in Queue to Museu Serralves! 
Driver 1 is starting the visit to Museu Serralves! 
Client 7 is in queue 
Client 8 is in queue 
Client 9 is in queue 
Driver 2 was called to the airport driving: Taxi/Uber 
Client 10 is in queue 
Driver 2 is in Queue to Museu Serralves! 
Client 11 is in queue 
Client 12 is in queue 
Driver 3 was called to the airport driving: Bus 
Driver 3 is in Queue to Museu Serralves! 
Driver 1 finished the visit to Museu Serralves! 
Driver 1 is starting the trip to next destiny: Foz do Douro! 
Driver 2 is starting the visit to Museu Serralves! 
Driver 1 is in Queue to Foz do Douro! 
Driver 1 is starting the visit to Foz do Douro! 
Driver 1 arrived at the airport! !Here is the Problem! 
Driver 2 finished visiting Museu Serralves! 
Driver 2 is starting the trip to next destiny: Foz do Douro! 
Driver 1 ended the visit to Foz do Douro! Driver 1 is on is way back to the Airport!

проблема в том, что драйвер 1 должен прибыть в аэропорт после последней фразы на выходе, не раньше, чем я смогу показать другие классы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...