Как определить, когда приложение начало использовать отражение Java, завершено - PullRequest
2 голосов
/ 26 июня 2009

У меня есть Java-программа, которая использует отражение, чтобы найти и вызвать метод main (String [] args) другой Java-программы. Эта другая программа обычно представляет собой приложение Swing, которое порождает свои собственные потоки. Мне было интересно, есть ли способ определить, когда эта другая «программа» заканчивается. Я не уверен, есть ли способ обнаружить это, поскольку он выполняется в том же пространстве, что и основная программа. Текущий метод состоит в том, чтобы просто проверить, не являются ли какие-либо из открытых кадров нашими собственными, и это не самое лучшее решение. Запуск дочерней программы в ее процессе также не является возможным вариантом, так как мы получаем к ней доступ.

РЕДАКТИРОВАТЬ: Похоже, ответ является двойной подход. Сначала создайте ThreadGroup и запустите дочернюю программу в потоке, который является членом этой группы. Затем обязательно проверьте Frame.getFrames (), принадлежит ли какой-либо из кадров дочернему элементу.

Спасибо, --Sandro

Ответы [ 2 ]

1 голос
/ 26 июня 2009

Запустите дочернее приложение в отдельной ThreadGroup (вероятно, лучше всего настроить его как группу потоков демона) и периодически проверяйте, содержит ли оно какие-либо запущенные потоки или подгруппы.

0 голосов
/ 26 июня 2009

Если у вас есть способы обнаружить окна, которые использует это дочернее приложение, вы можете просто присоединить соответствующие прослушиватели окон и дождаться события закрытия.

Редактировать:

Использование подхода прослушивания событий, по крайней мере, позволяет вам не выполнять циклы и постоянно запрашивать кадры. Для случая порожденных нитей я понятия не имею. Если есть способ, которым вы могли бы отслеживать свои собственные потоки и обнаруживать потоки приложения, вы могли бы сделать тот же цикл, что и для фреймов.

Редактировать 2:

Что мне приходит в голову, так это использовать JMX на себе, чтобы получить потоки и другую информацию, но я не знаю JMX более подробно.

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