1

У меня есть поток, который включает и отключает кнопку в определенное случайное время, если кнопка нажата, когда она включена, будет выполнено действие, которое изменит изображение кнопки. Меня беспокоит синхронизация здесь. Предположим, что кнопка вот-вот отключится и будет нажата, поэтому теперь оба потока будут выполнять одно, чтобы отключить ее, а другое - изменить изображение. Как мне синхронизировать это?Требуется ли в следующей ситуации синхронизация?

+0

Если это необходимо, как я должен его достичь? – Ajak6

ответ

2

Все инструменты Java GUI (будь то Swing, Apache Pivot, JavaFX, AWT, SWT, Android ...) являются однопоточными. Это означает, что все слушатели всегда будут стрелять в один поток. Итак:

  • нет, вам не нужно выполнять какие-либо синхронизации,
  • да, вы должны принять меры предосторожности, чтобы выключения и включения кнопки происходит в ГИП нити (wahetever это называется). Точный код является специфичным для инструментария.
+1

AWT заведомо * не * однопоточный и синхронизирован повсюду. При разработке у него были некоторые идеи, позволяющие работать из нескольких потоков, хотя это практически невозможно. – bestsss

+0

Вы говорите, что мой класс GUI должен быть actionListener. В настоящее время я создал другой класс слушателя действий, который изменит образ в его actionperformed. Отдельный поток, который переключает кнопку. Но в какой-то момент оба метода запуска и выполненное действие будут иметь один и тот же объект кнопки, на котором они должны работать. @bestsss – Ajak6

+0

@AmeyJain, я этого не делаю. Придерживайтесь одной нити. – bestsss

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