原文地址:http://android.xsoftlab.net/training/multiple-threads/index.html

引言

大量的数据处理往往需要花费很长的时间,但如果将这些工作切分并行处理,那么它的速度与效率就会提升很多。在拥有多线程处理器的设备中,系统可以使线程并行运行。比如,使用多线程将图像文件切分解码展示要比单一线程解码快得多。

这章我内容们将会学习如何设置并使用多线程及线程池。我们还会学习如何在一个线程中运行代码以及如何使该线程与UI线程进行通信。

定义在线程中运行代码

这节课我们会学习如何实现Runnable接口,该接口中的run()方法会在线程中单独执行。你也可以将Runnable对象传递给一个Thread类。这种执行特定任务的Runnable对象在某些时候被称为任务

Thread类与Runnable类同属于基础类,它们仅提供了有限的功能。它们是比如HandlerThread, AsyncTask, 以及IntentService等线程功能类的基础核心。这两个类同样属于ThreadPoolExecutor的核心基础。ThreadPoolExecutor会自动管理线程以及任务队列,它甚至还可以使多个线程同时执行。

定义Runnable实现类

实现一个Runnable对象很简单:

public class PhotoDecodeRunnable implements Runnable {...@Overridepublic void run() {/** Code you want to run on the thread goes here*/...}...
}

实现run()方法

在Runnable的实现类中,Runnable的run()方法中所含的代码将会被执行。通常来说,Runnable中可以做任何事情。要记得,这里的Runnable不会运行在UI线程,所以在它内部不能直接修改View对象这种UI对象。如果要与UI线程通讯,你需要使用到Communicate with the UI Thread课程中所描述的技术。

在run()方法的开头处设置当前的线程使用后台优先级。这种方式可以减少Runnable对象所属线程与UI线程的资源争夺问题。

这里还将Runnable对象所属的线程引用存储了起来。由Thread.currentThread()可以获得当前的线程对象。

下面是代码的具体实现方式:

class PhotoDecodeRunnable implements Runnable {
.../** Defines the code to run for this task.*/@Overridepublic void run() {// Moves the current Thread into the backgroundandroid.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);.../** Stores the current Thread in the PhotoTask instance,* so that the instance* can interrupt the Thread.*/mPhotoTask.setImageDecodeThread(Thread.currentThread());...}
...
}

Android官方开发文档Training系列课程中文版:线程执行操作之定义线程执行代码...相关推荐

  1. Android官方开发文档Training系列课程中文版:目录

    原文地址 : http://android.xsoftlab.net/training/index.html 引言 在翻译了一篇安卓的官方文档之后,我觉得应该做一件事情,就是把安卓的整篇训练课程全部翻 ...

  2. Android官方开发文档Training系列课程中文版:创建自定义View之View的创建

    原文地址:http://android.xsoftlab.net/training/custom-views/index.html 引言 Android框架含有大量的View类,这些类用来显示各式各样 ...

  3. Android官方开发文档Training系列课程中文版:OpenGL绘图之图形绘制

    原文地址:http://android.xsoftlab.net/training/graphics/opengl/draw.html 如果你还不清楚如何定义图形及坐标系统,请移步:Android官方 ...

  4. Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之Fragment创建

    原文地址:http://android.xsoftlab.net/training/basics/fragments/index.html 导言 为了在Android中创建动态的多面板用户界面,你需要 ...

  5. Android官方开发文档Training系列课程中文版:线程执行操作之创建多线程管理器

    原文地址:http://android.xsoftlab.net/training/multiple-threads/create-threadpool.html 上节课我们学习了如何定义一个任务.如 ...

  6. Android官方开发文档Training系列课程中文版:高效显示位图之管理位图内存

    原文地址:http://developer.android.com/training/displaying-bitmaps/manage-memory.html 除了在上一节中描述的步骤之外,还有一些 ...

  7. Android官方开发文档Training系列课程中文版:如何避免ANR?

    原文地址:http://android.xsoftlab.net/training/articles/perf-anr.html#anr 尽管你写代码可能通过了世界上所有的性能测试,但是它还是可能会让 ...

  8. Android官方开发文档Training系列课程中文版:线程执行操作之线程间通讯

    原文地址:http://android.xsoftlab.net/training/multiple-threads/communicate-ui.html 上节课我们学习了如何启动一项由Thread ...

  9. Android官方开发文档Training系列课程中文版:布局性能优化之ListView的优化

    原文地址:http://android.xsoftlab.net/training/improving-layouts/smooth-scrolling.html 想要让ListView滑动流畅的关键 ...

  10. Android官方开发文档Training系列课程中文版:数据存储之数据库存储

    原文地址:http://android.xsoftlab.net/training/basics/data-storage/databases.html 对于保存重复的结构化的数据最理想的方式就是存到 ...

最新文章

  1. 禁止input输入框输入指定内容
  2. Ubuntu/Deepin--How to remove packeges?
  3. 索尼MOTO等压榨国内代工厂:员工宿舍像监狱
  4. SolrCloud Hello Word
  5. linux等待队列wait_queue_head_t和wait_queue_t
  6. mapxtreme 2005 v6.6 破解
  7. 如何将pdf在线转换成word免费版
  8. c语言立方体的体积和表面积,立方体表面积C语言
  9. ppapi插件(可自定义方法)
  10. python脚本打包成exe+配置文件
  11. VBA玩转系统剪贴板
  12. 垃圾分类数据集-8w张图片245个类附赠tensorflow代码
  13. 微博结集成书 过把“作家瘾”
  14. JS显示当前时间(包含农历时间)
  15. 数学建模 论文 各部分 写作指导 及 获奖技巧讲解【美赛MCM/ICM】
  16. 科学记忆单词---麦克米伦
  17. 长差分:LongDifference及AcemogluAER论文推介
  18. VS2015安装报“安装包丢失或损坏”(win7)问题的解决办法(证书安装后无效,仍然无法解决请尝试本文)
  19. HTML 文本格式化
  20. 当display:flex弹性布局与position:absolute/fixed定位一起用,会出现的问题与解决方法

热门文章

  1. mysql单个表_mysql – 哪个更有效:一个长单表还是分布表?为什么?
  2. 计算机网络ip地址博客,计算机网络中,这些IP地址你知道吗?
  3. linux db2v9.7卸载,db2 卸载和安装
  4. 2021年杭州电子科技计算机考研大纲,杭州电子科技大学2021年硕士研究生招生专业目录与自命题科目考试大纲...
  5. linux内核 semaphore,Linux内核参数信号量semaphore设置
  6. 钉钉 e应用 mysql_钉钉E应用入门总结
  7. 深度学习之卷积神经网络CNN及tensorflow代码实现示例详细介绍(转载)
  8. idea启动崩溃问题
  9. Java知识点总结(JavaIO-File类)
  10. 揭秘 IFTTT 每天处理几十亿事件数据的基础结构