Подтвердить что ты не робот

Threading в GWT (клиент)

Из того, что я понимаю, вся клиентская сторона приложения GWT преобразуется в Javascript при его создании, поэтому я полагаю, что этот вопрос связан как с Javascript, так и с возможностями, которые предлагает GWT.

У меня есть несколько десятков процессов, которые нужно будет инициировать в моем приложении GWT, каждый процесс будет непрерывно звонить на сервер. Поддерживает ли GWT резьбу? Поддерживает ли клиентская сторона GWT потоки?

EDIT:

Эта ссылка указывает:

No JavaScript knowledge required If you’re just a user of the framework, 
which I am for the matter of discussion, you do not need to know JavaScript 
in order to write dynamic content, be it client-side such as rolling frames, 
docking panels or scheduled "multi-threading" tasks, or server-side calls 
using XMLHttpRequests (aka AJAX). 

или запланированные "многопоточные" задачи, что это значит?

4b9b3361

Ответ 1

JavaScript не поддерживает многопоточность. Однако GWT имеет класс для "имитации" потоков, который не является реальным многопоточным, но в большинстве случаев делает то, что вам нужно: com.google.gwt.core.client.Scheduler.ScheduledCommand. Этот метод основан на классе таймера, который выполняет метод по истечении заданного времени.

Например, при размещении следующего кода в вашем собственном коде метод scheduleDeferred будет возвращаться напрямую, а ваш код будет продолжен после команды, а метод execute() выполняется с помощью таймера:

Scheduler.get().scheduleDeferred(new ScheduledCommand() {
   public void execute() {
      .. code here is executed using the timer technique.
   }
});

Вы можете создать повторяющуюся команду RepeatingCommand, которая может использоваться для запуска команды более одного раза. Запустите его с помощью Scheduler.get().scheduleIncremental(), который выполнит команду до тех пор, пока метод execute не вернет false. Вы можете использовать это для разделения задач на подзадачи, чтобы улучшить поведение "потоков". Scheduler поддерживает некоторые дополнительные методы для запуска запланированной команды по-разному. Подробнее см. JavaDoc.

Отредактировано и обновлено новым классом GWT вместо устаревшего DeferredCommand.

Ответ 2

Существует работа с веб-рабочими как часть HTML5, которая реализована в нескольких браузерах, но не на всех (особенно в Internet Explorer). Вы можете использовать эти функции там, где они доступны, но что вам нужно сделать, это посмотреть на модель программирования javascript.

Javascript обычно работает асинхронно. Запросы увольняются, и в какой-то момент их ответы принимаются как событие. Одновременно вы можете иметь большое количество ожидающих запросов. Это потребует немного редизайна вашей системы.

Ответ 3

Новый способ - использовать Scheduler

Ответ 4

JavaScript не поддерживает многопоточность, поэтому, независимо от того, что делает GWT, многопоточность должна выполняться исключительно на стороне сервера, поскольку GWT может использовать только функции, которые уже доступны на стороне клиента.