国产探花免费观看_亚洲丰满少妇自慰呻吟_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開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 林口县| 屯门区| 孝昌县| 石城县| 四会市| 胶南市| 隆子县| 郯城县| 华容县| 连云港市| 昭觉县| 巩留县| 天峨县| 米泉市| 南漳县| 内丘县| 美姑县| 嘉义市| 吉安县| 永顺县| 临海市| 宝鸡市| 麻阳| 万年县| 浦县| 辽阳县| 上蔡县| 铜川市| 彭阳县| 隆尧县| 土默特右旗| 渝中区| 大兴区| 乌鲁木齐市| 兴和县| 天峨县| 兴安县| 和静县| 正镶白旗| 宁武县| 嘉善县|