Разъяснение по методу SwingUtilities InvokeLater - PullRequest
0 голосов
/ 19 июня 2019

Привет всем :) Попытка убедиться, что я понимаю, как работает метод SwingUtilities InvokeLater. Пока я собрал следующее:

  • Он запускает графический интерфейс в специальном потоке, называемом потоком диспетчера событий.
  • Это делается путем создания объекта Runnable, который содержит ссылку на ваш графический интерфейс

Я пытаюсь понять, как это на самом деле позволяет другому потоку обновлять интерфейс.

Насколько я понимаю, обновление GUI обычно не является потокобезопасным; Я взял это, чтобы означать, что если у вас было два потока, A и B, и они оба пытались изменить значение для определенного компонента (скажем, индикатор выполнения), ничто не мешает им обновлять одновременно и вызывать какой-то прикольный выход.

С помощью метода InvokeLater создается ли какая-либо очередь? Где запросы из потоков A и B хранятся «в очереди» и выполняются один за другим?

Это то место, где оно получает свое имя как «вызывать позже» из-за того, что запрос на обновление графического интерфейса не обрабатывается немедленно, а должен ждать в очереди до своей очереди?

Спасибо, ребята, высоко ценится.

...