Android studio - ScheduledExecutorService странная ошибка

168
08 сентября 2018, 07:50

Делаю выделение определенного синтаксиса через ScheduledExecutorService, со следующим синтаксисом:

ScheduledExecutorService executorService = Executor.newSingleThreadScheduleExecutor();
executorService.schedule(new syntaxLight(s, editText), 2, TimeUnit.SECONDS);

где s - Editable, а editText - EditText. Все это сделано в TextWatcher, когда же наступает 2 секунда, то приложение зависает до тех пор, пока я не нажал enter или не был набран 24 символ. Странно, но это так.

Answer 1

Нужно дождаться выполнение всех потоков в Executor и завершить его:

public class MyRunnable implements Runnable {
    private int a;
    private int b;
    public MyRunnable(int a, int b) {
        this.a = a;
        this.b = b;
    }
    @Override
    public void run() {
        System.out.println(a + b);
    }
}
public class Application {
    public static void main(String[] args) throws InterruptedException {
        ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
        executorService.schedule(new MyRunnable(3, 2), 5, TimeUnit.SECONDS);
        executorService.shutdown();
        executorService.awaitTermination(10, TimeUnit.SECONDS);
    }
}
READ ALSO
как устроена область видимости?

как устроена область видимости?

мучает вопрос, как внутри работает область видимости в различных языках? Ну или хотя бы интересно было бы узнать общую концепциюкак например...

202
Telegram создание бота через реального юзера [закрыт]

Telegram создание бота через реального юзера [закрыт]

Как через https://githubcom/rubenlagus/TelegramApi создать бота который будет обрабатывать сообщения юзеров ?

212
Реализация конечного автомата

Реализация конечного автомата

Знаю про конечные автоматы только какие-то основы, наподобие определения, сути и тд Подскажите, где подробно почитать про их реализацию? (желательно...

215
Можно ли запустить метод start не используя launch?

Можно ли запустить метод start не используя launch?

Для запуска метода start() в javafx нужно в main() написать Applicationlaunch(args)

157