Поток Java Swingworker

У меня есть вопрос о параллелизме Java. Я практикую Java Threading. Что я делаю, так это создаю простой интерфейс с кнопкой и JSlider. Поэтому, когда я нажимаю кнопку, переменная увеличивается, и JSlider перемещается соответственно. Теперь я задаюсь вопросом, является ли Swingworker правильным выбором.


person thelinh bui    schedule 07.09.2012    source источник


Ответы (2)


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

person Steve McLeod    schedule 07.09.2012
comment
Я так не думаю... потому что переменная должна быть прикреплена к потоку и постепенно увеличиваться, а JSlider перемещается в соответствии со значением переменной. Если бы я использовал только цикл while для этого. Интерфейс будет заморожен - person thelinh bui; 07.09.2012
comment
Тогда да, вы можете использовать SwingWorker. Но есть еще javax.swing.Timer, который сделан для того, что вы вроде описываете в комментарии. - person Steve McLeod; 07.09.2012
comment
Должен ли я вызывать repaint() на JSlider. Спасибо - person thelinh bui; 07.09.2012
comment
Пожалуйста, только один вопрос на страницу - но нет, вам не нужно вызывать перерисовку. - person Steve McLeod; 07.09.2012

Вы можете сначала профилировать свой код.

  • Примеры, когда изменение состояния не блокирует EDT: здесь и здесь.

  • Пример, когда действие может заблокировать EDT: здесь.

  • Пример, когда действие будет блокировать EDT: здесь.

person trashgod    schedule 07.09.2012