Асинхронный обратный вызов с потоками ускорения
Я работаю по медленному соединению и хочу настроить 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)
);