/ / Como determinar quando um aplicativo começou a usar o java reflection foi concluído - java, reflection

Como determinar quando um aplicativo começou a usar a reflexão java concluiu - java, reflection

Eu tenho um programa Java que usa reflexão paraencontre e invoque o método principal (String [] args) de outro programa Java. Esse outro programa geralmente é um aplicativo Swing que tende a gerar seus próprios threads. Fiquei me perguntando se havia uma maneira de determinar quando esse outro "programa" termina. Não tenho certeza se existe alguma maneira de detectar isso, pois ele é executado no mesmo espaço que o programa host. O método atual é apenas para verificar se algum dos quadros abertos não é nosso, não é exatamente a melhor solução. A execução do programa filho em seu processo também não é realmente uma opção, uma vez que temos acesso a ele.

EDITAR: Parece que a resposta é uma abordagem dupla. Primeiro, crie um ThreadGroup e inicie o programa filho em um thread que seja membro desse grupo. Verifique se Frame.getFrames () se algum dos quadros pertence ao filho.

Obrigado, --Sandro

Respostas:

1 para resposta № 1

Inicie o aplicativo filho em um separado ThreadGroup (provavelmente é melhor configurá-lo como um grupo de encadeamentos daemon) e verifique periodicamente se ele contém encadeamentos ou subgrupos em execução.


0 para resposta № 2

Se você tiver maneiras de descobrir as janelas que este aplicativo filho está usando, basta anexar os ouvintes de janelas apropriados e aguardar todo o evento close.

Editar:

Usar a abordagem do ouvinte de eventos pelo menos permitevocê não deve repetir e consultar constantemente os quadros. Para o caso dos fios gerados, não faço ideia. Se houver uma maneira de rastrear seus próprios threads e descobrir os threads do aplicativo, você poderá fazer o mesmo loop dos Frames.

Editar 2:

O que me vem à cabeça é usar o JMX em si mesmo para obter os threads e outras informações, mas não conheço o JMX em muitos detalhes.