Spec-Zone .ru
спецификации, руководства, описания, API
След: Создание GUI С JFC/Swing
Урок: Параллелизм в Swing
Начальные Потоки
Домашняя страница > Создание GUI С JFC/Swing > Параллелизм в Swing

Начальные Потоки

У каждой программы есть ряд потоков, где логика приложения начинается. В стандартных программах есть только один такой поток: поток, который вызывает main метод программы class. В апплетах начальные потоки - те, которые создают апплет, возражают и вызывают init и start методы; эти действия могут произойти на единственном потоке, или на двух или трех различных потоках, в зависимости от реализации платформы Java. В этом уроке мы вызываем эти потоки начальные потоки.

В программах Swing у начальных потоков нет много, чтобы сделать. Их самое существенное задание должно создать a Runnable объект, который инициализирует GUI и планирует тот объект для выполнения на событии, диспетчеризирует поток. Как только GUI создается, программа прежде всего управляется событиями GUI, каждое из которых вызывает выполнение короткой задачи на событии, диспетчеризируют поток. Код программы может запланировать additionals задачи на событие, диспетчеризируют поток (если они завершаются быстро, чтобы не вмешаться в обработку событий), или рабочий поток (для продолжительных задач).

Начальный поток планирует задачу создания GUI, вызывая javax.swing.SwingUtilities.invokeLater или javax.swing.SwingUtilities.invokeAndWait . Оба из этих методов берут единственный параметр: Runnable это определяет новую задачу. Их единственная разница обозначается их именами: invokeLater просто планирует задачу и возвраты; invokeAndWait ожидает задачи закончиться перед возвратом.

Можно видеть примеры этого всюду по учебному руководству Swing:

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        createAndShowGUI();
    }
});

В апплете задача создания GUI должна быть запущена от init использование метода invokeAndWait; иначе, init может возвратиться прежде, чем GUI создается, который может вызвать проблемы для веб-браузера, запускающего апплет. В любом другом виде программы, планируя задачу создания GUI обычно последняя вещь, которую делает начальный поток, таким образом, не имеет значения, использует ли это invokeLater или invokeAndWait.

Почему начальная буква не распараллеливает, просто создают GUI непосредственно? Поскольку почти весь код, который создает или взаимодействует с компонентами Swing, должен работать на событии, диспетчеризируют поток. Это ограничение обсуждается далее в следующем разделе.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Параллелизм в Swing
Следующая страница: Событие Диспетчеризирует Поток