Я пытаюсь выполнить команду для бота Telegram, который расширяет TelegramWebhookBot асинхронно. Для этой цели я использую готовый метод:
try {
bot.executeAsync(response, new Callback());
logger.info("started");
Thread.sleep(30000);
logger.info("finished");
} catch ...
Но он не работает. Мои команды выполняются одна за другой (через 0,5 минуты), а не одновременно .. Затем я принял жестокое решение, я реализовал создание потока вручную:
new Thread(() -> {
try {
bot.execute(response);//sync method
logger.info("started");
Thread.sleep(30000);
logger.info("finished");
} catch ...).start();
И это работает !!! Затем я вошел в реализацию Telegram API метода executeAsyn c и то, что я вижу ... то же самое, что и я. Они используют ExecutorService (exe) только для создания потоков вместо моего нового Tread:
exe.submit(new Runnable() {
@Override
public void run() {
try {
String responseContent = sendMethodRequest(method);//the sync background method of bot. execute
Я все же предпочитаю использовать готовый метод executeAsyn c из Telegram .. Что я делаю не так? Почему он не выполняется одновременно. Спасибо