RxJava'da seçim yapabileceğiniz 5 farklı zamanlayıcı vardır :
instant () : Geçerli iş parçacığında hemen çalışma yürüten bir Zamanlayıcı oluşturur ve döndürür.
trampoline () : Geçerli iş tamamlandıktan sonra yürütülecek geçerli iş parçacığında kuyrukları çalıştıran bir Zamanlayıcı oluşturur ve döndürür.
newThread () : Her iş birimi için yeni bir İş Parçacığı oluşturan bir Zamanlayıcı oluşturur ve döndürür.
computation () : Hesaplamalı çalışmaya yönelik bir Zamanlayıcı oluşturur ve döndürür. Bu, olay döngüleri, geri aramaların işlenmesi ve diğer hesaplama işleri için kullanılabilir. Bu zamanlayıcıda GÇ bağlı işleri yapmayın. Zamanlayıcıları kullanın. yerine io () .
io () : G / Ç ile ilişkili işler için tasarlanmış bir Zamanlayıcı oluşturur ve döndürür. Uygulama, gerektiğinde büyüyecek bir Execut iş parçacığı havuzu tarafından desteklenir. Bu, eşzamansız olarak bloke edici ES'yi gerçekleştirmek için kullanılabilir. Bu zamanlayıcı üzerinde hesaplama çalışması yapmayın. Zamanlayıcıları kullanın. computation () yerine.
Sorular:
İlk 3 zamanlayıcı oldukça açıklayıcıdır; ancak, hesaplama ve io hakkında biraz kafam karıştı .
- "ES'ye bağlı çalışma" tam olarak nedir? Streams (
java.io
) ve files (java.nio.files
) ile uğraşmak için kullanılıyor mu? Veritabanı sorguları için kullanılıyor mu? Dosyaları indirmek veya REST API'lerine erişmek için kullanılıyor mu? - Nasıl hesaplama () farklıdır newThread () ? Tüm computation () çağrıları her seferinde yeni (arka plan) bir iş parçacığı yerine tek (arka plan) iş parçacığında mıdır?
- IO çalışması yaparken computation () öğesini çağırmak neden kötü ?
- Hesaplamalı iş yaparken io () öğesini çağırmak neden kötü ?