AsyncTask 第二篇线程篇

本文详细介绍了Android中AsyncTask的多线程知识,包括Thread、Runnable、Callable、Future和FutureTask的使用,探讨了如何在不使用内存共享或线程间通信的情况下获取线程执行结果,为理解AsyncTask的源代码打下基础。
摘要由CSDN通过智能技术生成

转载注明出处:http://blog.csdn.net/xiaohanluo/article/details/52024590

1. 简介

       本篇主要针对AsyncTask中使用到的多线程知识进行讲解,也会涉及到一些基本的多线程知识。在上一篇中大家都知道了AsyncTask内部会起一个非UI线程去执行一些比较耗时的操作,那么这个线程在AsyncTask是怎么样被执行的,仅仅只是实例化一个Thread然后启动它吗?在内部对线程是怎么样处理的?这些都需要从AsyncTask的源代码中才能查看到,在看源代码之前先讲解一下关于AsyncTask内部涉及到的一些多线程知识,方便后面更快速的理解源代码,磨刀不误砍柴工!

2. 线程之Thread&Runnable

       说到多线程,通常很快就能想到Thread类和Runnable接口,相信大家并不陌生,直接说一下二者的区别吧。

  • 类和接口的区别,在java中只能单一的继承,但是可以实现多个接口,所以使用Runnable更灵活
  • 使用Runnable可以实现资源共享
  • Thread实现了Runnable接口

       看起来好像Runnable非常好用,那么都用它不就行了吗?为什么要需要Thread呢?是因为Threadstart()方法是调用了本地的一个系统方法,来创建一个线程,这个才是实现多线程的根本,而run()方法只是线程中执行的具体任务,这也是在创建多线程时候,要调用start()方法而不是直接调用run()方法的原因。

       使用起来也非常简单,看下面代码。因为Runnable仅仅是个接口,并没有start()方法,所以会依托于Thread。

//Thread使用
new Thread() {
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值