در واقع Flowable یک نوع دادهی جریانی (stream) در Reactive Streams است که در کتابخانهی راکتیو RxJava وجود دارد. Flowable مشابه Observable است و دادهها را به صورت ناهمزمان(asynchronous) و به صورت یک جریان(stream) از رویدادها منتشر میکند.
در مقابل، Flowable از حالت سینگل (single) به جای تولید تک تک رویدادها، میتواند تعداد بینهایتی رویداد را تولید کند و این امکان را دارد که فشار(backpressure) را در مقابل مشترکین اعمال کند. فشار به معنی کنترل و مدیریت سرعت انتقال دادهها است تا مشترکین قادر به پردازش و مصرف آنها باشند و از سربار بالایی جلوگیری شود.
در واقع Flowable به صورت یک سری عملگر قابل ترکیب است و میتوان با استفاده از این عملگرها رویدادها را تبدیل، فیلتر، ترکیب و تغییر داد.
مثالی از استفاده از Flowable:
Flowable.range(1, 1000) // یک Flowable از اعداد 1 تا 1000 را تولید میکند .filter(number -> number % 2 == 0) // فقط اعداد زوج را انتخاب میکند .map(number -> "Number: " + number) // اعداد را به رشته تبدیل میکند .subscribe(System.out::println); // رشتههای نهایی را چاپ میکند
در این مثال، Flowable اعداد از 1 تا 1000 را تولید میکند و سپس با استفاده از عملگرهاfilter و map، اعداد زوج را انتخاب کرده و آنها را به رشته تبدیل میکند. در نهایت، با استفاده ازsubscribe، رشتههای نهایی را چاپ میکند.