Android官方开发文档Training系列课程中文版:线程执行操作之定义线程执行代码
原文地址: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系列课程中文版:线程执行操作之定义线程执行代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 随笔-机器如何学习我们的知识?
- 下一篇: android sina oauth2.