Jump to content

Recommended Posts

Posted

Oi pessoal, é a minha primeira visita aqui, e espero dar-me bem!!!

Há uma coisa que me anda a moer a cabeça: tenho um projecto em que tenho de usar técnicas de sincronização/comunicação entre threads (ou processos). Consiste na simulação de um aeroporto, em que temos vários aviões a chegar e a partir,com uma torre de controlo para atribuir as diversas portas de embarque e desembarque, bem como as pistas, que podem ser usadas tanto para aterragens como para descolagens.

Ora bem, a dúvida é apenas a seguinte: deverá ser a classe representativa do avião a classe que irá fazer o extends da thread, ou outra classe fará isso?

Por favor,apenas uma achega, tou a partir o miolo  :wallbash:

Posted

Na minha forma de ver o exercício, tendo em conta que não dizes como é feita a comunicação entre os elementos, avião e torre de controlo, a torre de controlo será um conjunto de threads. Imagina que o aeroporto consegue atender 50 aviões de cada vez. A torre será assim composta por várias threads, neste caso 50, e sempre que chegar um avião uma dessas 50 threads irá ser indicada para tratar os dados do avião. Quando todas as threads estiverem ocupadas então não poderás tratar mais aviões e terás de colocar os que chegarem e lista de espera.

Assim ficas com o objecto TorreControlo que não estende de Thread mas que contém, seguindo o exemplo dos 50 aviões, 50 objectos, TrataAviao, e um outro objecto, ControloDeEspera, que será usado para periódicamente verificar a lista de aviões em espera e atribuir alguma TrataAviao que esteja livre para tratar os aviões.

Tens assim dois momentos, por um lado tens o aviso de chegada de um novo avião, onde verificas se existem TrataAviao livres e, caso existam associas ao avião, caso não existam envias esse avião para a lista de espera. Outra momento será a thread ControloDeEspera que irá verificar a lista de aviões em espera e, novamente, caso exitam TrataAviao livres vai despachar os aviões.

Estes dois casos podem ser reduzidos a um em que todos os aviões vão para a lista de espera, independentemente de existirem lugares vagos.

Como não dizes como é a comunicação entre aviões e torres, ou melhor, não dizes como é que é introduzido um avião, assumi que é apenas um método da TorreControo. Por isso removi-os da equação das threads 😛

Resumindo: Um objecto TrataAviao e um objecto ControloDeEspera que estendem de Thread

Espero que ajude e não confunda mais 👍

Posted

Desculpa, esqueci-me de referir o método de controlo.Obrigado pela resposta rápida.

Há uma torre de controlo que controla as pistas(são 2,servem as duas para aterrar e descolar) e os aviões propriamente ditos. Há uma fila de embarque/desembarque para 5 aviões no máximo.Podem estar no máximo cinco aviões à espera de porta na fila para

chegadas e cinco aviões à espera de pista para descolar na fila para partidas,fazendo duas filas de espera no total.

Não percebo como representar as pistas.

E tive a pesquisar, será que a classe SynchronousQueue servirá para o que eu pretendo?

Posted

As pistas poderão ser as threads, imagina que tens apenas 2 threads para controlar aterragens e descolagens, se essas threads estiverem ocupadas então as pistas estão ocupadas. Não estou a ver necessidade de outra estrutura, mas podes também criar um fila de espera que simule as pistas... no entanto do que estou a perceber parece-me informação duplicada.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.