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