Асинхронные таски

q20w26a

Разработчик
Пользователь
Добрейшего времени суток. Мне понадобилось использовать асинхронные таски для работы работы с миром, но как мы знаем, делать так нельзя, иначе будет java.lang.IllegalStateException: Asynchronous <действие> !. Собственно, отказаться от асинхронизации мне нельзя, и мне нужен ваш совет.
Наткнулся кстати на один способ, но выглядит он костыльно как-то... Суть заключается в том, что мы создаем еще один таск (не асинхронный), и запускаем его в асинхронном. Заранее спасибо.
 

q20w26a

Разработчик
Пользователь
@iBuseWinner, без разницы, работу с миром я рассмотрел как пример.
Я попробовал этот способ с запуском еще одного Runnable в асинхронном таске, но он выполняется всего один раз.
Java:
public class AsyncTask extends BukkitRunnable  {

    @Override
    public void run() {
            //"Сложные" математические расчеты
            final BukkitRunnable syncTask = new BukkitRunnable()
            {
               @Override
               public synchronized void run()
               {
                     //действия с Bukkit API
                  notify();
               }
            };
        }

}
Java:
...
    @Override
    public void onEnable() {
        new AsyncTask().runTaskAsynchronously(this);
    }
...
 
Последнее редактирование модератором:

BlackBarcode13

Разработчик
Пользователь
А зачем делать асинхронным то, что нельзя делать в асинке?
Что конкретно ты там делаешь?

*не посмотрел на дату*
 

q20w26a

Разработчик
Пользователь
mc923, не помню что я тогда делал, но уже не требуется. Кстати, асинхронно мжно работать с NMS зато.
 

Комнаты в чате

Верх Низ