Java - сделать вызов AJAX, сделать что-то еще, а затем обработать результат AJAX? - PullRequest
0 голосов
/ 05 декабря 2018

Я унаследовал огромное приложение Java J2EE (Java 1.8, Tomcat 8).Вход в систему занимает 30 секунд - в основном из-за нескольких последовательных вызовов AJAX (с сервера Java, НЕ JavaScript) к различным службам.В частности, возврат одного из них занимает более 10 секунд.

Мне не нужен этот результат до конца - поэтому я мог бы инициализировать вызов AJAX в начале, делать другие вещи, а затем синхронизировать и использовать результатв конце.

Я никогда не работал с многопоточностью Java, но это кажется одним из способов достижения этого.Но нежелание ждать результата вызова AJAX кажется обычным случаем.Существуют ли какие-либо инструменты / библиотеки / соглашения для этого?

И у этого класса есть много других методов - я не (думаю), что я хочу сделать весь класс "Runnable" - я бы сделал парувнутренних классов - "официант и уведомитель" или ???Извините, просто никогда не работал с потоками в Java и пытался понять, с чего начать ....

Спасибо ...

1 Ответ

0 голосов
/ 05 декабря 2018

ОК, для всех, кто столкнулся с этой проблемой, после небольшого исследования решение для моего варианта использования было довольно простым.

1) Я создал внутренний класс, который реализовал «Runnable».Таким образом, он имел доступ ко всем свойствам окружающего класса.В методе «run» внутреннего класса я сделал вызов AJAX.

2) В исходном методе вверху я создал и запустил внутренний поток класса:

Thread gml = new Thread(new GetModuleList());
gml.start();

3) Делал все остальные вещи, которые не зависели от возврата из gml ...

4) Когда мне это было нужно, я просто делал "gml.join ()".

Кажется, работает нормально, и не так сложно, как я изначально волновался, может быть.Внутренний класс был для меня уловкой - он позаботился обо всем обмене данными потока, пока мой основной поток остается в стороне от свойств, установленных рабочим потоком, до окончания соединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...