Как реализовать вызовы асинхронных методов в Java? - PullRequest
2 голосов
/ 28 февраля 2012

Есть ли способ реализовать вызов метода Async в Java, кроме потока и Executor? Если он реализуется Исполнителем, будет ли вводиться какая-либо задержка?

Ответы [ 4 ]

1 голос
/ 05 ноября 2013

Другим вариантом является использование обмена сообщениями (JMS) для реализации такого поведения.
Также в Java EE6 Session Beans вы можете использовать @Asynchronous для вызова метода Async.

1 голос
/ 28 февраля 2012

Использование Threads - это путь в Java.Executors - это просто способ обернуть управление потоками в более удобный контейнер.

может ввести задержку.Если поток (ы) заняты работой другой задачи, будет задержка.В противном случае задержка основывается на механизме переключения контекста ОС, который, как правило, достаточно отзывчив (который, в свою очередь, может отличаться в многоядерной архитектуре и архитектурах, основанных на гиперпоточности или аналогичных технологиях).

0 голосов
/ 28 февраля 2012

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

new A(instanceOfB);

someMethodOfA() {
    doSomething();
    instanceOfB.callback();
}
0 голосов
/ 28 февраля 2012

Вы можете использовать DynamicProxy (базовая функция Java), чтобы ввести слой между вызывающим и вызываемым.В прокси вызов метода представлен в виде объекта.Вернитесь немедленно и вызовите метод в отдельном потоке.Остается вопрос, как вернуть значения вызывающей стороне.Планируете ли вы получить возвращаемые значения, которые вы хотите вернуть позже?Это может быть решено с помощью метода обратного вызова.

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