博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android官方开发文档Training系列课程中文版:线程执行操作之定义线程执行代码...
阅读量:6821 次
发布时间:2019-06-26

本文共 1342 字,大约阅读时间需要 4 分钟。

原文地址:

引言

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

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

定义在线程中运行代码

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

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

定义Runnable实现类

实现一个对象很简单:

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

实现run()方法

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

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

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

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

class PhotoDecodeRunnable implements Runnable {...    /*     * Defines the code to run for this task.     */    @Override    public void run() {        // Moves the current Thread into the background        android.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());        ...    }...}

转载地址:http://vopzl.baihongyu.com/

你可能感兴趣的文章