android多線(xiàn)程應(yīng)用場(chǎng)景 android線(xiàn)程池需要關(guān)閉嗎?
android線(xiàn)程池需要關(guān)閉嗎?我認(rèn)為使用線(xiàn)程池的最大優(yōu)點(diǎn)是我們可以跟蹤我們打開(kāi)的線(xiàn)程,并且可以在不需要處理它們時(shí)關(guān)閉它們。同時(shí),在定義了線(xiàn)程池之后,我們可以重用線(xiàn)程,而無(wú)需打開(kāi)更多線(xiàn)程。這對(duì)我們手機(jī)
android線(xiàn)程池需要關(guān)閉嗎?
我認(rèn)為使用線(xiàn)程池的最大優(yōu)點(diǎn)是我們可以跟蹤我們打開(kāi)的線(xiàn)程,并且可以在不需要處理它們時(shí)關(guān)閉它們。同時(shí),在定義了線(xiàn)程池之后,我們可以重用線(xiàn)程,而無(wú)需打開(kāi)更多線(xiàn)程。這對(duì)我們手機(jī)的發(fā)展是非常重要的。打開(kāi)的線(xiàn)程越多,應(yīng)用程序中的線(xiàn)程越多,占用的內(nèi)存越多,速度就越慢。提高現(xiàn)有線(xiàn)程的重用性是一個(gè)很好的選擇
線(xiàn)程池中的處理線(xiàn)程有很多種,例如:限制執(zhí)行任務(wù)的線(xiàn)程池按順序、一個(gè)接一個(gè)、一個(gè)指定的數(shù)目、創(chuàng)建可以在指定時(shí)間內(nèi)執(zhí)行任務(wù)的線(xiàn)程池,等線(xiàn)程池,可以重復(fù)執(zhí)行,并根據(jù)指定的工廠(chǎng)模式執(zhí)行
1? Android線(xiàn)程可以分為主線(xiàn)程和子線(xiàn)程。主線(xiàn)程主要用于處理與界面相關(guān)的事情,如繪制界面和響應(yīng)用戶(hù)的操作。為了保證用戶(hù)體驗(yàn),主線(xiàn)程必須保證其響應(yīng)速度。在任何時(shí)候,我們都不應(yīng)該在主線(xiàn)程中處理非常耗時(shí)的任務(wù),否則會(huì)造成接口阻塞甚至ANR。程序的功能是完成耗時(shí)的操作,保證主線(xiàn)程的響應(yīng)速度。主線(xiàn)程和子線(xiàn)程之間的通信是基于處理機(jī)制的
2? 除了線(xiàn)程本身,Android中還有很多其他功能可以扮演線(xiàn)程的角色,比如asynctask、IntentDevice、handlerthread等,雖然它們的表現(xiàn)形式不同于傳統(tǒng)的線(xiàn)程,但其本質(zhì)仍然是線(xiàn)程,它只結(jié)合了一些其他功能,使它們適用于不同的應(yīng)用場(chǎng)景。Asynctask封裝了線(xiàn)程池和處理程序,主要用于開(kāi)發(fā)人員在使用子線(xiàn)程時(shí)方便地更新UI;handlerthread是一個(gè)帶有消息循環(huán)的線(xiàn)程,其中可以使用處理程序。Intentservice使用handerthread執(zhí)行任務(wù)。任務(wù)完成后,intentservice將自動(dòng)退出。
3 ? 在操作系統(tǒng)中,線(xiàn)程是操作系統(tǒng)調(diào)度的最小單元,同時(shí),線(xiàn)程是一個(gè)有限的系統(tǒng)資源,即線(xiàn)程不能無(wú)限生成,而線(xiàn)程的創(chuàng)建和銷(xiāo)毀都會(huì)有相應(yīng)的開(kāi)銷(xiāo)。如果一個(gè)進(jìn)程需要頻繁地創(chuàng)建子線(xiàn)程來(lái)執(zhí)行任務(wù),而每次執(zhí)行任務(wù)時(shí),它都需要重新創(chuàng)建和銷(xiāo)毀線(xiàn)程,這顯然不是一種有效的方法。正確的方法是使用線(xiàn)程池。一定數(shù)量的線(xiàn)程將緩存在線(xiàn)程池中。當(dāng)我們創(chuàng)建一個(gè)線(xiàn)程時(shí),我們會(huì)將該線(xiàn)程存儲(chǔ)在線(xiàn)程池中。當(dāng)我們下次需要使用線(xiàn)程時(shí),我們不需要重復(fù)創(chuàng)建線(xiàn)程,而是直接將它從線(xiàn)程池中取出。這樣,我們可以節(jié)省頻繁創(chuàng)建和銷(xiāo)毀線(xiàn)程的成本。