亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

在Android線程池里運行代碼任務實例

 更新時間:2014年06月26日 09:14:26   作者:冰凍魚  
這篇文章主要介紹了在Android線程池里運行代碼任務實例,同時介紹了線程池中停止任務的方法,需要的朋友可以參考下

本節(jié)展示如何在線程池里執(zhí)行任務。流程是,添加一個任務到線程池的工作隊列,當有線程可用時(執(zhí)行完其他任務,空閑,或者還沒執(zhí)行任務),ThreadPoolExecutor會從隊列里取任務,并在線程里運行。
本課同時向你展示了如何停止正在運行的任務。

在線程池里的線程上執(zhí)行任務

在ThreadPoolExecutor.execute()里傳入 Runnable對象啟動任務。這個方法會把任務添加到線程池工作隊列。當有空閑線程時,管理器會取出等待最久的任務,在線程上運行。

復制代碼 代碼如下:

public class PhotoManager {
    public void handleState(PhotoTask photoTask, int state) {
        switch (state) {
            // The task finished downloading the image
            case DOWNLOAD_COMPLETE:
            // Decodes the image
                mDecodeThreadPool.execute(
                        photoTask.getPhotoDecodeRunnable());
            ...
        }
        ...
    }
    ...
}

當ThreadPoolExecutor啟動Runnable時,會自動調(diào)用run()方法。

中斷正在運行的代碼

要停止任務,你需要中斷任務的進程。你需要在創(chuàng)建任務的時候,保存一個當前線程的handle.
如:

復制代碼 代碼如下:

class PhotoDecodeRunnable implements Runnable {
    // Defines the code to run for this task
    public void run() {
        /*
         * Stores the current Thread in the
         * object that contains PhotoDecodeRunnable
         */
        mPhotoTask.setImageDecodeThread(Thread.currentThread());
        ...
    }
    ...
}

要中斷線程,調(diào)用Thread.interrupt()就可以了。提示:線程對象是系統(tǒng)控制的,可以在你的app進程外被編輯。因為這個原因,你需要在中斷它前加訪問鎖,放到一個同步塊里:

復制代碼 代碼如下:

public class PhotoManager {
    public static void cancelAll() {
        /*
         * Creates an array of Runnables that's the same size as the
         * thread pool work queue
         */
        Runnable[] runnableArray = new Runnable[mDecodeWorkQueue.size()];
        // Populates the array with the Runnables in the queue
        mDecodeWorkQueue.toArray(runnableArray);
        // Stores the array length in order to iterate over the array
        int len = runnableArray.length;
        /*
         * Iterates over the array of Runnables and interrupts each one's Thread.
         */
        synchronized (sInstance) {
            // Iterates over the array of tasks
            for (int runnableIndex = 0; runnableIndex < len; runnableIndex++) {
                // Gets the current thread
                Thread thread = runnableArray[taskArrayIndex].mThread;
                // if the Thread exists, post an interrupt to it
                if (null != thread) {
                    thread.interrupt();
                }
            }
        }
    }
    ...
}

在大多數(shù)案例里,Thread.interrupt()會馬上停止線程??墒牵粫V乖诘却木€程,但不會中斷cpu或network-intensive任務。為了避免系統(tǒng)變慢,你應該在開始嘗試操作前測試等待中斷的請求。

復制代碼 代碼如下:

/*
 * Before continuing, checks to see that the Thread hasn't
 * been interrupted
 */
if (Thread.interrupted()) {
    return;
}
...
// Decodes a byte array into a Bitmap (CPU-intensive)
BitmapFactory.decodeByteArray(
        imageBuffer, 0, imageBuffer.length, bitmapOptions);
...

相關(guān)文章

  • Android手機屏幕敲擊解鎖功能代碼

    Android手機屏幕敲擊解鎖功能代碼

    Android手機支持敲擊屏幕解鎖,敲擊屏幕解鎖是一項很實用的功能,本文以android平臺為例使用java代碼實現(xiàn)Android手機屏幕敲擊解鎖功能,非常不錯,具有參考借鑒價值,感興趣的朋友一起學習吧
    2016-07-07
  • Android判斷11位手機號碼的方法(正則表達式)

    Android判斷11位手機號碼的方法(正則表達式)

    項目里頭需要做一個判斷用戶輸入的號碼是否是正確的手機號碼,正確的手機號碼應該是11位的,這里我們需要用一個正則表達式來進行判斷,下面我把寫法分享給大家
    2016-12-12
  • Android圖片色彩變換實現(xiàn)方法

    Android圖片色彩變換實現(xiàn)方法

    這篇文章主要為大家詳細介紹了Android圖片色彩變幻實現(xiàn)方法,一般就是換個色彩度,飽和度,亮度,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Android Handler內(nèi)存泄漏詳解及其解決方案

    Android Handler內(nèi)存泄漏詳解及其解決方案

    在android開發(fā)過程中,我們可能會遇到過令人奔潰的OOM異常,這篇文章主要介紹了Android Handler內(nèi)存泄漏詳解及其解決方案,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • android實現(xiàn)菜單三級樹效果

    android實現(xiàn)菜單三級樹效果

    這篇文章主要為大家詳細介紹了android實現(xiàn)菜單三級樹效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Android編程設(shè)定activity進入和退出效果的方法

    Android編程設(shè)定activity進入和退出效果的方法

    這篇文章主要介紹了Android編程設(shè)定activity進入和退出效果的方法,簡單分析了Android Activity進入與退出效果的實現(xiàn)原理及相關(guān)屬性設(shè)置技巧,需要的朋友可以參考下
    2017-07-07
  • Android 使用XML做動畫UI的深入解析

    Android 使用XML做動畫UI的深入解析

    在Android應用程序,使用動畫效果,能帶給用戶更好的感覺。做動畫可以通過XML或Android代碼。本教程中,介紹使用XML來做動畫。在這里,介紹基本的動畫,如淡入,淡出,旋轉(zhuǎn)等,需要的朋友可以參考下
    2013-07-07
  • Android Camera開發(fā)手電筒功能

    Android Camera開發(fā)手電筒功能

    這篇文章主要介紹了Android Camera開發(fā)手電筒功能的相關(guān)資料,需要的朋友可以參考下
    2016-07-07
  • Android圖像視圖ImageView實現(xiàn)圖像拉伸效果

    Android圖像視圖ImageView實現(xiàn)圖像拉伸效果

    這篇文章主要為大家詳細介紹了Android圖像視圖ImageView實現(xiàn)圖像拉伸演示,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • SimpleCommand實現(xiàn)上傳文件或視頻功能(四)

    SimpleCommand實現(xiàn)上傳文件或視頻功能(四)

    這篇文章主要介紹了SimpleCommand實現(xiàn)上傳文件或視頻功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10

最新評論