AsyncTask 和 Thread 区别

简介:

一、AsyncTask是封装好的线程池,比起Thread+Handler的方式,AsyncTask在操作UI线程上更方便,因为onPreExecute()、onPostExecute()及更新UI方法onProgressUpdate()均运行在主线程中,这样就不用Handler发消息处理了;
二、我不太同意封装好就会影响性能的说法,在我实际的运用中,真正的缺点来自于AsyncTask的全局线程池只有5个工作线程,也就是说,一个APP如果运用AsyncTask技术来执行线程,那么同一时间最多只能有5个线程同时运行其他线程将被阻塞(注:不运用AsyncTask执行的线程,也就是自己new出来的线程不受此限制),所以AsyncTask不要用于多线程取网络数据,因为很可能这样会产生阻塞,从而降低效率。

 

AsyncTask可能存在新开大量线程消耗系统资源和导致应用FC  Force Close 的风险,因此,我们需要根据自己的需求自定义不同的线程池,


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/6347806.html,如需转载请自行联系原作者

相关文章
|
5月前
|
Java
揭秘!为何Java多线程中,继承Thread不如实现Runnable?
【6月更文挑战第19天】在Java多线程中,实现`Runnable`比继承`Thread`更佳,因Java单继承限制,`Runnable`可实现接口复用,便于线程池管理,并分离任务与线程,提高灵活性。当需要创建线程或考虑代码复用时,实现`Runnable`是更好的选择。
42 0
|
Java Android开发
Android中Callable、Future、FutureTask的概念以及几种线程池的使用
在开始介绍线程池之前,先来介绍下`Callable`和`Future`的概念,众所周知,`Android`中实现多线程的方式有两种,实现`Runnable`接口或者继承一个`Thread`,但是这两种方式都有一个缺点:在任务执行完成之后没有返回结果,所以在`Java 1.5`之后,出现了`Callable`和`Future`,通过他们构建的线程,可以在线程执行完成之后得到返回结果。
260 0
|
Java API
【Java】什么是线程?Thread和Runnable区别
【Java】什么是线程?Thread和Runnable区别
134 0
【Java】什么是线程?Thread和Runnable区别
|
存储
多线程原理和常用方法以及Thread和Runnable的区别
多线程原理和常用方法以及Thread和Runnable的区别
除了Thread和Runnable,你还知道第三种创建线程的方式Callable吗
相信大多数学过多线程的同学都知道创建线程常见的有三种方式,一种是继承Thread类,一种是实现Runnable接口,最后一种就是Callable,今天主要是对最后不常见的Callable方式进行介绍。
122 0
Thread和Runnable实现多线程(一)上
实现多线程,有两种方式,一种是继承 Thread 类,一种是实现 Runnable接口。
195 0
Thread和Runnable实现多线程(一)上
Thread和Runnable实现多线程(一)下
Thread和Runnable实现多线程(一)
123 0
Thread和Runnable实现多线程(一)下
Java三种线程创建调用方式-Thread、Runnable与Callable
继承类Thread与实现接口Runnable类似,因为Thread也是实现了接口Runnable; 继承类Thread与实现接口Runnable的run方法与start方法都会调用执行体,run同步执行,start异步执行; 实现接口Callable的线程被调用时,主线程会阻塞等待执行结果; 值得注意的是:实现接口Callable的线程名称和主线程名称一样。
170 0
|
Java
Java并发编程之线程创建和启动(Thread、Runnable、Callable和Future)
这一系列的文章暂不涉及Java多线程开发中的底层原理以及JMM、JVM部分的解析(将另文总结),主要关注实际编码中Java并发编程的核心知识点和应知应会部分。 说在前面,Java并发编程的实质,是线程对象调用start方法启动多线程,而线程对象则必须是Thread类或其子类实现。
1209 0
|
安全 Java 调度
Java多线程——Thread Runnable源码解析
Java多线程的两种实现方法大家都应该知道了:继承Thread的子类实例化和实现Runnable接口用这个接口实现类去创建Thread实例。 Java的线程在Linux平台上使用的是NPTL机制,JVM线程跟内核轻量线程(LWP)一一对应。
1432 0