Существует ли какой-либо объект, созданный во время выполнения потока, или нет после того, как поток остановлен? - PullRequest
0 голосов
/ 27 марта 2012

У меня есть JButton "MAIN_BUTTON" в окне.При щелчке по нему каждый раз запускается новый поток .

Вновь созданный поток, в свою очередь, вызывает метод другого класса, который отображает новое "child_window" * (используя конструктор и создавая его объект) *.В этом окне есть две кнопки «принять» и «отклонить».При нажатии любой из этих кнопок выполняется некоторая работа, и это окно закрывается.

Теперь я хочу после остановки потока узнать, уничтожен ли объект "CHILD_WINDOW" или он все еще существует в памяти.

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

Теперь я хочу узнать после остановки потока, уничтожен ли объект "CHILD_WINDOW" или он все еще существует в памяти.

В общем случае ответ зависит от того, что сделал поток со ссылкой на объект. Если он поместил его куда-то, это означает, что он «достижим», тогда объект все еще будет существовать. Если нет, он может прекратить свое существование, в зависимости от того, когда и когда GC соберет его.

Я не совсем уверен, что происходит с Window объектом. Я подозреваю, что может быть некоторая ссылка на объект в графическом контексте (или что-то в этом роде), что означает, что Window будет оставаться достижимым до тех пор, пока некоторый код уровня приложения не закроет или не удалит его явно. (В противном случае вы услышите истории о том, что окна Swing случайно исчезают ... из-за того, что сборщик мусора восстанавливает их.)

1 голос
/ 27 марта 2012

Если вы остановите поток, все объекты все еще находятся в памяти (если у вас все еще есть ссылка на это).Поток объекта уничтожен.Используйте метод dispose () для Releases all of the native screen resources used by this Window, its subcomponents, and all of its owned children.

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