2013-03-30 1 views
-1

Мы все знаем, что, поскольку свинг не поточно-, она может быть выполнена только в одном потоке, в то время, называется EDT.Ограничения свинга

Что я должен использовать, чтобы иметь размахивающую внутреннюю поверхность и компоненты, которые позволяют визуализировать многопоточность (другими словами, колебание не ограничивается выполнением только в формате EDT)?

+2

Я думаю, вы поняли ограничения. Это не ограничения только Swing, но в значительной степени любая графическая библиотека. Итог: вам нужно использовать фоновые потоки со всеми библиотеками GUI. Я призываю вас показать мне тот, у которого нет такой же проблемы. –

+0

Но программы были сделаны, что больше, чем несколько «визуальных» действий, происходящих в то же время ... Это должно быть возможно с ГПИ как-то ... Даже если не поточно, почему не может быть позволено программистам, чтобы иметь возможность создать безопасную для потока программу, используя библиотеку правильно? – Karlovsky120

+0

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

ответ

3

Использование свинг. Вам не нужно приложение , исполняющееся в одном потоке, просто изменение в графическом интерфейсе.

Это довольно часто, чтобы иметь несколько потоков выполнения и иметь каждый из них делают такие вещи, как:

EventQueue.invokeLater(new Runnable() { 
    public void run() { 
     someFrame.setVisible(true); 
     myCustomTableModel.updateWithNewData(newListOfData); 
    } 
}); 
+0

Но смогу ли я одновременно получить доступ к одним и тем же компонентам (объектам) разворота из разных потоков? И я говорю об одновременном выполнении нескольких EDT ... – Karlovsky120

+0

Да, вы можете смело вызывать EventQueue.invokeLater из столько потоков, сколько хотите, не беспокоясь о параллелизме. Система никогда не будет иметь несколько потоков отправки событий, но вы можете создать столько потоков приложений, сколько хотите; EventQueue.invokeLater правильно обрабатывает объединение ваших аргументов Runnable в выполнение потока отправки событий. – VGR

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

  • Нет связанных вопросов^_^