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

首頁(yè) > 系統(tǒng) > Android > 正文

Android編程自定義線(xiàn)程池與用法示例

2019-12-12 01:22:12
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

一、概述:

1、因?yàn)榫€(xiàn)程池是固定不變的,所以使用了單例模式
2、定義了兩個(gè)線(xiàn)程池,長(zhǎng)的與短的,分別用于不同的地方。因?yàn)槭褂昧藛卫J剑远x兩個(gè)。
3、定義了兩個(gè)方法,執(zhí)行的與取消的

二、代碼:

/** * @描述    線(xiàn)程管理池 * @項(xiàng)目名稱(chēng)   App_Shop * @包名     com.android.shop.manager * @類(lèi)名     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;  }  /**   * 長(zhǎng)線(xiàn)程池   * @return   */  public synchronized ThreadPoolProxy createLongPool(){    if (longPoolProxy == null) {      //(int corePoolSize 線(xiàn)程池大小, int maximumPoolSize 最大值, long keepAliveTime 存活時(shí)間)      longPoolProxy = new ThreadPoolProxy(5, 5, 5000);    }    return longPoolProxy;  }  /**   * 短線(xiàn)程池   * @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; //線(xiàn)程數(shù)    private int maximumPoolSize; //線(xiàn)程滿(mǎn)了后額外開(kāi)的線(xiàn)程窗口    private long keepAliveTime;//沒(méi)有線(xiàn)程執(zhí)行時(shí)存活時(shí)間    public ThreadPoolProxy(int corePoolSize,int maximumPoolSize, long keepAliveTime){      this.corePoolSize = corePoolSize;      this.maximumPoolSize = maximumPoolSize;      this.keepAliveTime = keepAliveTime;    }    /**     * 執(zhí)行線(xiàn)程     * @param runnable     */    public void execute(Runnable runnable){      if (pool == null) {        //最多可有多少個(gè)線(xiàn)程排隊(duì)        BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<Runnable>(10);        pool = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.MILLISECONDS, workQueue);      }      pool.execute(runnable);    }    /**     * 取消線(xiàn)程     * @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();        }      });    }  }});

更多關(guān)于A(yíng)ndroid相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Android線(xiàn)程與消息機(jī)制用法總結(jié)》、《Android開(kāi)發(fā)入門(mén)與進(jìn)階教程》、《Android調(diào)試技巧與常見(jiàn)問(wèn)題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 乐业县| 诸城市| 大足县| 洛阳市| 子洲县| 万州区| 贵溪市| 红桥区| 邵阳市| 拉萨市| 湘潭市| 新蔡县| 中方县| 濮阳市| 临清市| 庆阳市| 浏阳市| 香格里拉县| 南城县| 谢通门县| 永安市| 金溪县| 迁西县| 吴堡县| 苏州市| 乌兰县| 胶州市| 岗巴县| 固镇县| 银川市| 军事| 太仆寺旗| 浪卡子县| 凉城县| 宁阳县| 阳谷县| 扎鲁特旗| 昭苏县| 方正县| 柯坪县| 丁青县|