調(diào)度器以一種最簡單的方式將多線程用在你的Apps的中。它們時RxJava重要的一部分并能很好地與Observables協(xié)同工作。它們無需處理實(shí)現(xiàn)、同步、線程、平臺限制、平臺變化而可以提供一種靈活的方式來創(chuàng)建并發(fā)程序。
RxJava提供了5種調(diào)度器:
.io().computation().immediate().newThread().trampoline()讓我們一個一個的來看下它們:
這個調(diào)度器時用于I/O操作。它基于根據(jù)需要,增長或縮減來自適應(yīng)的線程池。我們將使用它來修復(fù)我們之前看到的StrictMode違規(guī)做法。由于它專用于I/O操作,所以并不是RxJava的默認(rèn)方法;正確的使用它是由開發(fā)者決定的。
重點(diǎn)需要注意的是線程池是無限制的,大量的I/O調(diào)度操作將創(chuàng)建許多個線程并占用內(nèi)存。一如既往的是,我們需要在性能和簡捷兩者之間找到一個有效的平衡點(diǎn)。
這個是計(jì)算工作默認(rèn)的調(diào)度器,它與I/O操作無關(guān)。它也是許多RxJava方法的默認(rèn)調(diào)度器:buffer(),debounce(),delay(),interval(),sample(),skip()。
這個調(diào)度器允許你立即在當(dāng)前線程執(zhí)行你指定的工作。它是timeout(),timeInterval(),以及timestamp()方法默認(rèn)的調(diào)度器。
這個調(diào)度器正如它所看起來的那樣:它為指定任務(wù)啟動一個新的線程。
當(dāng)我們想在當(dāng)前線程執(zhí)行一個任務(wù)時,并不是立即,我們可以用.trampoline()將它入隊(duì)。這個調(diào)度器將會處理它的隊(duì)列并且按序運(yùn)行隊(duì)列中每一個任務(wù)。它是repeat()和retry()方法默認(rèn)的調(diào)度器。