JAVA學習筆記之多線程專題(三):線程池的使用

本文轉自:http://www.xuanyusong.com/archives/2439

Android線程池使用終結版

有一段時間沒寫博文了,今天抽空總結一下,也希望能通過自己寫的這些文章,加深理解的同時能幫助在技術方面有疑點的朋友搞清楚個所以然來,由於經常會在網上或羣裏看到有朋友會問線程方面的東西,就像我一個朋友他們老師講的,J2SE、J2EE裏面使用的線程方面的東西可能不是太多 ,但是在Android開發裏面,玩的就是線程(UI Thread)! 好了,廢話就說這麼多吧,直入正題!今天要講的東西就是線程池、線程的高效率使用,靈活控制!今天死馬我就用最常用的幾種方式來分別實現應用中使用的線程方面的知識,(共寫了兩個不同入口的Activity來分開不同的實現方式,大家可以自行註釋AndroidManifest.xml中的Launch入口或打開註釋)好了,先隨便列幾個吧,如:AsyncTask 、Runnable 、Thread、ThreadPool、 Executors等等的使用,看我文章的朋友應該都很清楚小馬的方式啦,果斷先上效果,再一步步分解代碼,來吧,效果圖如下:

一:無大小限制的線程池執行效果如下

Android研究院之應用開發線程池的經典使用(二十九) - 雨鬆MOMO程序研究院 - 1

二:限制按順序來執行任務的線程池效果如下

Android研究院之應用開發線程池的經典使用(二十九) - 雨鬆MOMO程序研究院 - 2

三:一個一個任務的執行線程池效果如下(與按順序執行效果是一樣的,只是內部實現稍有不同)

Android研究院之應用開發線程池的經典使用(二十九) - 雨鬆MOMO程序研究院 - 3

四:按指定個數來執行任務的線程池效果如下

Android研究院之應用開發線程池的經典使用(二十九) - 雨鬆MOMO程序研究院 - 4

 

五:創建一個可在指定時間裏執行任務的線程池,亦可重複執行,不常用,效果與四相同

Android研究院之應用開發線程池的經典使用(二十九) - 雨鬆MOMO程序研究院 - 5

 

六:按指定工廠模式來執行的線程池,效果與四、五一樣,但用方式六創建的線程池都有在工廠中指定的線程屬性,

比如:線程名字、是否爲用戶線程等等屬性

Android研究院之應用開發線程池的經典使用(二十九) - 雨鬆MOMO程序研究院 - 6

 

七:線程池中任務執行時可暫停效果圖如下

Android研究院之應用開發線程池的經典使用(二十九) - 雨鬆MOMO程序研究院 - 7

 

 

八:用Runnable、ConcurrentLinkedQueue、ConcurrentMap、Future、ExecutorService關聯實現的效果圖如下

Android研究院之應用開發線程池的經典使用(二十九) - 雨鬆MOMO程序研究院 - 8

         哦的了,效果看完了,現在就請大家自行修改AndroidManifest.xml中主Activity的入口來看兩種不同方式實現的代碼效果吧,首先,先貼一下Main.java類的代碼,希望大家詳細看裏面的註釋,一定要詳細看,你不會吃虧的,相信我!(備註:爲了寫文章加註釋還有查找的時候方便,小馬把所有的主類及輔助類以內部類的形式寫到一個.java文件裏面了,如果朋友們覺得看着亂,不爽的話,可以自行將裏面的類抽取到單獨的.java文件中,幾分鐘搞定的事!)

 

方式一(純ExecutorService、AsyncTask、Runnable關聯實現相關文件如下):

 

         1.1:主類文件(Main.java)

 

 

         1.2:佈局文件

 

 

 

方式二(Runnable、ConcurrentLinkedQueue、ConcurrentMap、Future、ExecutorService關聯實現的相關文件如 下):

 

          2.1:主類文件(MyRunnableActivity.java)

 

 

         2.2:輔助類(MyRunnable.java)

 

 

         2.3:佈局文件

 

 

 

方式一、方式二的全局配置文件AndroidManifest.xml文件的配置如下:

 

 

            好了,今天要寫內容,大體就是這些了,項目的源碼大家可以到這http://mzh3344258.blog.51cto.com/1823534/1313611 裏面的附件下載,WordPress裏面不知道怎麼上傳,大家多見諒吧,還得繞個路去下載,非常抱歉! O_O 如果能仔細的將上面的東西都看完並消化的話,線程池方面的東西可能以後並不會太過爲難你啦!呵呵,當然了,小馬這些代碼中寫的都是一些比較簡單的寫法, 僅僅是使用了在線程中休眠的方式來模擬網絡下載(還是個假象),如果在實際代碼中使用時,尤其在釋放資源這一塊,不要只是單單釋放了我們自己控制的線程池及其任務,還要將網絡請求的Http也一同銷燬(disconnection)掉哦,這樣纔算做到了完美!如果還有哪位朋友沒有安卓源碼的話,可以到這個地址查看官方在線的安卓系統源碼:https://github.com/android  急急忙忙寫的,如果文章中有什麼地方寫的不對的,真的很希望Android老鳥、菜鳥都來指點、提問,代碼中若不對的,或不太合理的地方,有朋友發覺了還請及時批評指正!小馬先在此謝謝大家啦!加油,每天進步一點,堅持總會有收穫的!廢話不多說了,大家晚安!…O_O…

                                                                                            

                                                                                             一個很幸福的壞人!  小馬果、酷_莫名簡單


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章