异步优化详解
创建线程,创建线程池
Executors.newFixedThreadPool()//设置线程数量,参考AsyncTask
问题1.任务必须执行在主线程当中(不符合异步要求)
解决办法:把任务改造成可以在子线程中执行,或者把任务放到主线程执行
问题2.异步任务结束时间晚于调用时机(需要在某个阶段完成)
解决办法:使用java的CountDownLatch锁
问题3:CPU密集型任务,IO密集型任务
异步优化痛点
1.代码不够优雅
2.场景不好处理(依赖关系)
3.维护成本高
启动器流程
代码Task化,启动逻辑抽象为Task
根据所有任务依赖关系排序生成一个有向无环图
多线程按照排序后的优先级依次执行
启动器流程图
延迟初始化方案
new H