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

Ответы: Параллелизм в Swing

Вопросы

Вопрос 1: Для каждой из следующих задач определите, какой поток она должна быть выполнена в и почему.
Ответ 1:

Вопрос 2: Один поток не является привилегированным потоком для любой из задач, упомянутых в предыдущем вопросе. Назовите этот поток и объясните, почему его приложения столь ограничиваются.
Ответ 2: начальные потоки запускаются, первая задача GUI на событии диспетчеризируют поток. После этого программа Swing прежде всего управляется событиями GUI, которые инициировали задачи на событии, диспетчеризируют поток и рабочий поток. Обычно, начальные потоки не оставляют ни с чем сделать.

Вопрос 3: SwingWorker имеет два параметра типа. Объясните, как эти параметры типа используются, и почему часто не имеет значения, каковы они.
Ответ 3: параметры типа определяют тип окончательного результата (также тип возврата doInBackground метод) и тип промежуточных результатов (также параметр вводит для publish и process). Много фоновых задач не обеспечивают заключительные или промежуточные результаты.

Упражнения

Вопрос 1: Измените Flipper пример так, чтобы это приостановило 5 секунд между "зеркальными отражениями монеты." Если пользователь щелкает по "Отмене", зеркально отражающий монету цикл сразу завершается.
Ответ 1: См. исходный код для Flipper2. Измененная программа добавляет задержку центрального doInBackground цикл:

protected Object doInBackground() {
    long heads = 0;
    long total = 0;
    Random random = new Random();
    while (!isCancelled()) {
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            //Cancelled!
            return null;
        }
        total++;
        if (random.nextBoolean()) {
            heads++;
        }
        publish(new FlipPair(heads, total));
    }
    return null;
}

try ... catch причины doInBackground возвратиться, если прерывание получается, в то время как поток спит. Вызов cancel с параметром true гарантирует, что прерывание отправляется, когда задача отменяется.

«ПредыдущийTOC

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

Предыдущая страница: Вопросы и Упражнения: Параллелизм в Swing