国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android編程自定義線程池與用法示例

2019-10-22 18:18:17
字體:
來源:轉載
供稿:網友

本文實例講述了Android編程自定義線程池與用法。分享給大家供大家參考,具體如下:

一、概述:

1、因為線程池是固定不變的,所以使用了單例模式
2、定義了兩個線程池,長的與短的,分別用于不同的地方。因為使用了單例模式,所以定義兩個。
3、定義了兩個方法,執行的與取消的

二、代碼:

/** * @描述    線程管理池 * @項目名稱   App_Shop * @包名     com.android.shop.manager * @類名     ThreadManager * @author   chenlin * @date    2014年3月29日 下午10:17:06 */public class ThreadManager {  private ThreadManager(){};  private static ThreadManager instance= new ThreadManager();  private ThreadPoolProxy longPoolProxy;  private ThreadPoolProxy shortPoolProxy;  public static ThreadManager getInstance(){    return instance;  }  /**   * 長線程池   * @return   */  public synchronized ThreadPoolProxy createLongPool(){    if (longPoolProxy == null) {      //(int corePoolSize 線程池大小, int maximumPoolSize 最大值, long keepAliveTime 存活時間)      longPoolProxy = new ThreadPoolProxy(5, 5, 5000);    }    return longPoolProxy;  }  /**   * 短線程池   * @return   */  public synchronized ThreadPoolProxy createShortPool(){    if (shortPoolProxy == null) {      shortPoolProxy = new ThreadPoolProxy(3, 3, 5000);    }    return shortPoolProxy;  }  public class ThreadPoolProxy{    private ThreadPoolExecutor pool;    private int corePoolSize; //線程數    private int maximumPoolSize; //線程滿了后額外開的線程窗口    private long keepAliveTime;//沒有線程執行時存活時間    public ThreadPoolProxy(int corePoolSize,int maximumPoolSize, long keepAliveTime){      this.corePoolSize = corePoolSize;      this.maximumPoolSize = maximumPoolSize;      this.keepAliveTime = keepAliveTime;    }    /**     * 執行線程     * @param runnable     */    public void execute(Runnable runnable){      if (pool == null) {        //最多可有多少個線程排隊        BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<Runnable>(10);        pool = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.MILLISECONDS, workQueue);      }      pool.execute(runnable);    }    /**     * 取消線程     * @param runnable     */    public void cancel(Runnable runnable){      if (pool != null) {        pool.remove(runnable);      }    }  }}

三、使用方法:

ThreadManager.getInstance().createLongPool().execute(new Runnable() {  @Override  public void run() {    //SystemClock.sleep(2000);    final LoadResult result = loadFromServer();    if (result != null) {      Util.runOnUiThread(new Runnable() {        @Override        public void run() {          currentState = result.getValue();          showPages();        }      });    }  }});

希望本文所述對大家Android程序設計有所幫助。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 柞水县| 靖州| 永丰县| 宜丰县| 陆河县| 渝中区| 永吉县| 正安县| 华容县| 汤原县| 长宁区| 思南县| 望城县| 泸定县| 长顺县| 洪湖市| 伊吾县| 屏山县| 大竹县| 浙江省| 信阳市| 武城县| 西城区| 隆德县| 资源县| 荔波县| 安吉县| 林芝县| 阿合奇县| 海丰县| 阳春市| 云浮市| 虹口区| 拜城县| 大洼县| 额敏县| 城步| 永新县| 阿鲁科尔沁旗| 西畴县| 阿拉善左旗|