2014-01-14 5 views
0

Я кодировал симуляцию с графическим интерфейсом JFrame для ввода параметров и отдельным JFrame, который запускает анимацию моделирования.Возможно ли остановить работу определенного потока?

Я обновить анимацию вместе с имитацией, так что вызов перекрашивать происходит от функции runsimulation()

Я добавил EXIT_ON_CLOSE для моего основного кадра GUI, и в то время как анимация работает, я могу закрыть кадр и он не появляется снова, но я хочу знать, можно ли закрыть поток моделирования, когда я закрываю рамку анимации.

Поскольку в настоящее время, когда я закрываю рамку, симуляция продолжает работать в фоновом режиме и заканчивается должным образом, но я хотел бы, чтобы событие закрытия на анимационном кадре также было «отменой симуляции».

+0

Возможный дубликат [Это хороший способ закрыть поток?] (Http://stackoverflow.com/questions/2488165/is-it-a-good-way-to-close-a-thread) –

+0

См. [Использование нескольких JFrames, Хорошая/Плохая Практика?] (Http://stackoverflow.com/a/9554657/418556) –

ответ

4

У вас здесь есть два выбора. Один из вариантов заключается в том, чтобы поток выполнялся в поток «Daemon». Это означает, что поток не будет поддерживать работу программы, поэтому, если вы закроете JFrame и выйдете из приложения, он немедленно завершится.

Помните, что длинная работающая нить может потенциально прекратиться внезапно и в середине обработки.

Путь (вероятно, лучше) состоит в том, чтобы называть поток interrupt() и проверять поток isInterrupted() через регулярные промежутки времени и выходить чисто, если флаг установлен.

Смежные вопросы