Потоки Java - вечный цикл в потоке рассылки событий Swing - PullRequest
2 голосов
/ 09 декабря 2010

У меня есть SwingWorker с реализацией:

public Void doInBackground() throws InterruptedException
{
     while (true)
     {
            while(_update)
            {

            }
     }
}

Если для _update установлено значение false, безопасно ли позволить EDT постоянно идти по циклу? Или я должен спать каждую секунду?

- РЕДАКТИРОВАТЬ

Похоже, я не использую SwingWorker, так как он должен использоваться. Спасибо всем. Я буду заниматься созданием SwingWorkers по мере необходимости.

Ответы [ 2 ]

4 голосов
/ 09 декабря 2010

Нельзя допустить, чтобы поток обработки событий зацикливался.

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

1 голос
/ 09 декабря 2010

Почему бы вам просто не запустить другой поток и не позволить ему запускаться / спать по мере необходимости, а использовать SwingUtilities.InvokeLater или что-то еще, чтобы пользовательский интерфейс работал по необходимости?

Без какого-либо другого контекста это выглядитВозможно, вы неправильно используете SwingWorker?

...