В Swing графический интерфейс должен обновляться только EDT, поскольку компоненты графического интерфейса не являются поточно-ориентированными.
У меня вопрос: если у меня есть один поток, отличный от EDT, который предназначен для обновления определенного компонента, и этот компонент не доступен ни одному другому потоку в моей программе, только этот выделенный поток, это нормально? ? В моем случае у меня есть JTable
, и поток получает информацию из сети и обновляет таблицу (без использования EventQueue.invokeLater
). Все остальные компоненты обновляются из EDT. До сих пор я не видел проблемы, и мне было интересно, появится ли ошибка в конечном итоге.
UPDATE
Моей целью было обновить таблицу в режиме реального времени. Данные постоянно поступают из сети, и для этого я выделил 1 поток только для таблицы, чтобы постоянно обновлять ее по мере их поступления. Если я использую SwingUtilities.invokeLater, это означает, что таблица будет обновлена, когда будет доступно EDT. Разве свинг не должен использоваться для обновления в реальном времени?