Спать в SwingWorker? - PullRequest
       6

Спать в SwingWorker?

5 голосов
/ 07 июня 2011

Мне нужно передать тестовые данные в интервал Swing за определенный период времени.Набор данных долго обрабатывается, поэтому я использую SwingWorker для анализа в фоновом режиме.Когда дело доходит до подачи данных в GUI (скажем, один элемент в секунду), я мог бы начать Timer с SwingWorker, но это кажется излишним.Какие-либо причины не спать изнутри самого SwingWorker?

Приветствия

Ответы [ 2 ]

4 голосов
/ 07 июня 2011

Так как SwingWorker не работает на EDT, сон внутри прекрасно.

SwingWorker предназначен для ситуаций где вам нужно долго бежать задача запускается в фоновом потоке и предоставлять обновления пользовательского интерфейса либо когда сделано или во время обработки.

На мой взгляд, Timer в дополнение к SwingWorker будет излишним. Вместо этого просто публикуйте проанализированные тестовые данные, когда это возможно, даже с нерегулярными интервалами.

3 голосов
/ 07 июня 2011

Пока вы переводите SwingWorker в спящий режим, он не будет загружать данные. Если это желательно, то такой подход хорош.

Если вы хотите продолжать загружать данные и просто увеличивать скорость подачи в GUI, то, похоже, лучше было бы запустить Timer в GUI, который будет проверять и извлекать новые данные из рабочего с интервалом, вместо этого работника, которому приходится совершать invokeLater вызовы обратно в GUI.

...