大飞

大飞 关注TA

挑战一切!

大飞

大飞

关注TA

挑战一切!

  •  世界的顶端
  • 混口饭吃
  • 写了333,609字

最近回复

该文章投稿至Nemo社区   Android  板块 复制链接


线程管理

发布于 2016/01/23 23:25 601浏览 0回复 1,903

android开发中,难免会创建很多线程,如果线程管理不好,容易引发很多问题,为大家推荐一个线程管理工具类,也是我一直使用的。


package com.zwhy.touyuan.manager;  import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit;  /**  * 线性管理类  */ public class ThreadManager { //1,创建一个线程的管理者的代理对象(代理模式)  private static ThreadProxyPool threadProxyPool;  private static Object object = new Object();  //2,创建线程池代理管理者对象  public static ThreadProxyPool getThreadProxyPool(){ synchronized (object) { if(threadProxyPool == null){ threadProxyPool = new ThreadProxyPool(3, 5, 5L);  }
      } return threadProxyPool;  } /**  * 用于执行线程中的任务,以及管理线程  */  public static class ThreadProxyPool{ private int corePoolSize;  private int maximumPoolSize;  private long keepAliveTime;  private ThreadPoolExecutor threadPoolExecutor;   public ThreadProxyPool(int corePoolSize,int maximumPoolSize,long keepAliveTime){ this.corePoolSize = corePoolSize;  this.maximumPoolSize = maximumPoolSize;  this.keepAliveTime = keepAliveTime;  } /**  * 将线程中需要执行的代码封装到任务中,然后给此方法执行  * @param runnable  */  public void execute(Runnable runnable){ if(runnable!=null){ if(threadPoolExecutor == null || threadPoolExecutor.isShutdown()){ threadPoolExecutor = new ThreadPoolExecutor( //核心线程数  corePoolSize, //3  //最大线程数  maximumPoolSize, //5  //线程在空闲的最大存活时间  keepAliveTime, //5  //线程存活时间单位  TimeUnit.MILLISECONDS,//毫秒  //任务队列  new LinkedBlockingQueue<Runnable>(),  //线程工程  Executors.defaultThreadFactory());  } threadPoolExecutor.execute(runnable);  }
      } /**  * 将任务传递进来,将还在任务队列中排队的任务移除方法  * @param runnable 需要移除的任务  */  public void cancelRunnable(Runnable runnable) { //判断线程对象是否存在,是否正在运行  if(runnable!=null){ if(threadPoolExecutor!=null && !threadPoolExecutor.isShutdown()){ //获取线程池中排队的任务队列,移除任务  threadPoolExecutor.getQueue().remove(runnable);  }
         }
      }
   }
}

点赞(0)

上一个文章:使用HttpURLConnection上传文件。

下一个文章:标签之UI篇

点了个评