精选圈子榜单优站
跟我一起AI炒ETF
赚大钱赚大钱赚大钱

线程管理


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);  }
         }
      }
   }
}


  • 若文章侵犯了您的权益,请联系站长处理:nemo@link-nemo.com

  • 2016-01-23
  • 905阅读
评论