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