2012-06-23 2 views
1

Я создаю приложение, в котором у меня будет поток SwingWorker, который сам по себе закручивает несколько рабочих потоков. Хотя эти потоки детей выполняют свою работу, я хочу добиться того, что когда прерывается родительский поток, я хочу, чтобы все дети тоже остановились (, т. К. Для них также было прервано). Я понимаю, что одним из способов достижения этой цели является использование глобальной переменной и включение потоков child в это собственное значение. Однако мне было интересно, будет ли это правильным подходом. Любые комментарии/предложения будут оценены.SwingWorker Прерывающие потоки

У меня в основном есть простой пользовательский интерфейс с JButton (сначала текст этого параметра установлен в «Start»). Когда кнопка нажата, текст изменяется на «Стоп», и инициируется поток родительского потока SwingWorker. Этот поток отправляет местоположение каталога в качестве параметра. То, что этот поток в свою очередь делает, порождает протекцию для каждого файла, который он находит в этой папке для выполнения определенной операции. Однако я хочу добиться того, что, как только щелкнет JButton, родительский поток должен остановить сканирование папки, а дети должны остановить сканирование файла.

Просто хотел узнать, какая будет предлагаемая методология передачи сообщений между родительским потоком и дочерним потоком для этой операции. Глобальная переменная? Любые комментарии/предложения были бы очень полезны для меня. Благодаря!

ответ

1

Один из подходов состоит в том, чтобы переопределить cancel() в родительском работнике и вызвать его для каждого суб-работника cancel(), прежде чем, наконец, позвонить super.cancel().

Также рассмотрите JTable исполнителей, которые могут быть аннулированы индивидуально.

+0

круто .... я попробую этот подход. Это выглядит лучше, чем использование глобальной переменной. Я на самом деле вызываю cancel(), когда пользователь нажимает JButton. Я думаю, что переопределить его, чтобы отменить детей, было бы хорошей идеей. Спасибо @trashgod за предложение! – Sujay

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