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…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值