线程池
来源:互联网 发布:海信网络机顶盒ip906h 编辑:程序博客网 时间:2024/06/01 10:01
1.耗时操作和更新UI
public class ThreadUtil { /** * 指定runnable 的run 方法在子线程执行 runnable 理解为线程任务 * OOM */public static void runOnThread(Runnable runnable) { ThreadPoolManager.getInstance().create().execute(runnable); } private static Handler sHandler = new Handler(); /** * 将runnable 的run方法放在主线程执行 */ public static void runOnUIThread(Runnable runnable) { sHandler.post(runnable); }}
2.线程的最大值和初始化值
public class ThreadPoolManager { private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors(); private static final int CORE_POOL_SIZE = CPU_COUNT + 1; private static final int MAXIMUM_POOL_SIZE = CPU_COUNT * 2 + 1; private ThreadPoolProxy proxy; private static ThreadPoolManager instance = new ThreadPoolManager(); private ThreadPoolManager() { } //第一步,获取线程管理器 public static ThreadPoolManager getInstance() { return instance; } /** * 第二步,线程管理器,获取线程池 ,并初始化线程的,初始值和最大值 * 效率最高 cpu*2+1 * * @return */ public ThreadPoolProxy create() { if (proxy == null) { proxy = new ThreadPoolProxy(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE); } return proxy; } public class ThreadPoolProxy { ThreadPoolExecutor threadPool; int corePoolSize; int maximumPoolSize; public ThreadPoolProxy(int corePoolSize, int maximumPoolSize) { this.corePoolSize = corePoolSize; this.maximumPoolSize = maximumPoolSize; } /** * 第三步,线程池开启线程,并执行线程任务 * 执行线程任务 * * @param runnable */ public void execute(Runnable runnable) { if (threadPool == null) { threadPool = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, 5000, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(128)); } //执行线程任务 threadPool.execute(runnable); } /** * 取消线程任务 */ public void cancel(Runnable runnable) { //isTerminated() isShutdown() 线程池 不停止 if (threadPool != null && !threadPool.isTerminated() && !threadPool.isShutdown()) { //移除线程任务 threadPool.remove(runnable); } } }}
阅读全文
1 0
- 线程与线程池
- 线程池 线程优先级
- Executor线程,线程池
- 线程、多线程、线程池
- IOS-线程、线程池
- Java线程:线程池
- 线程和线程池
- 线程、多线程、线程池
- 线程、多线程、线程池
- 线程(六)线程池
- ExecutorService(线程池)+线程
- 线程和线程池
- 线程&线程池 简略
- 线程和线程池
- 线程池 线程锁
- 线程、线程池总结
- 线程与线程池
- 线程、锁、线程池
- MQ消息中间件技术
- Android实现新闻效果原来如此简单
- java生成登录验证码
- java之log4j的配置
- 秒杀多线程第四篇 一个经典的多线程同步问题
- 线程池
- 如何保证数据安全性?【讨论】
- tomcat部署静态html网站方法
- 2017安卓技术大会:包括Android设计与架构
- ns3安装,更新源问题与解决
- 欢瑞世纪两部网剧卖了6.18亿,竟还没有赚回成本
- Go实战--golang资源管理七牛云对象存储(bucketManager)
- Android 访IOS 分段选择控制器 SegmentView
- document.write、innerHTML、innerText