Асинхронный обратный вызов с потоками ускорения

Я работаю по медленному соединению и хочу настроить Speedment Stream с обратным вызовом всякий раз, когда новый объект становится доступным из базы данных. Как я могу это сделать?

1 ответ

Вот один из способов сделать это:

public class Main {

    public static void main(String[] args) {

        DemoApplication app = new DemoApplicationBuilder()
            .withPassword("mySecretPw")
            .build();

        final Manager<Country> countries =    
             app.getOrThrow(CountryManager.class);

        ForkJoinPool.commonPool().submit(
            () -> countries.stream().forEach(Main::callback)
        );

    }

    private static void callback(Country c) {
        System.out.format("Thread %s consumed %s%n",         
            Thread.currentThread().getName(), c);
    }

}

Конечно, вы можете предоставить любой поток для ForkJoinPool. Например, если вы хотите получить только первые десять стран с именами, которые начинаются с "A" в вашем обратном вызове, то вы можете написать:

ForkJoinPool.commonPool().submit(
    () -> countries.stream()
        .filter(Country.NAME.startsWith("A"))
        .limit(10)
        .forEach(Main::callback)
);
Другие вопросы по тегам