- 创建一个可安排在给定延迟后运行命令或者定期地执行的线程池。
[java] view plain copy print ?
- ScheduledExecutorService threadPool = Executors.newScheduledThreadPool(3);// 效果类似于Timer定时器
每种线程池都有不同的使用场景,下面看一下这四种线程池使用起来有什么不同。
- FixedThreadPool
[java] view plain copy print ?
-
import java.util.concurrent.ExecutorService;
-
import java.util.concurrent.Executors;
-
public class ThreadPoolTest {
-
public static void main(String[] args) {
-
ExecutorService threadPool = Executors.newFixedThreadPool(3);
-
for(int i = 1; i < 5; i++) {
-
final int taskID = i;
-
threadPool.execute(new Runnable() {
-
public void run() {
-
for(int i = 1; i < 5; i++) {
-
try {
-
Thread.sleep(20);// 为了测试出效果,让每次任务执行都需要一定时间
-
} catch (InterruptedException e) {
-
e.printStackTrace();
-
}
-
System.out.println(“第” + taskID + “次任务的第” + i + “次执行”);
-
}
-
}
-
});
-
}
-
threadPool.shutdown();// 任务执行完毕,关闭线程池
-
}
-
}
输出结果:
[java] view plain copy print ?
-
第1次任务的第1次执行
-
第2次任务的第1次执行
-
第3次任务的第1次执行
-
第2次任务的第2次执行
-
第3次任务的第2次执行
-
第1次任务的第2次执行
-
第3次任务的第3次执行
-
第1次任务的第3次执行
-
第2次任务的第3次执行
-
第3次任务的第4次执行
-
第2次任务的第4次执行
-
第1次任务的第4次执行
-
第4次任务的第1次执行
-
第4次任务的第2次执行
-
第4次任务的第3次执行
-
第4次任务的第4次执行
上段代码中,创建了一个固定大小的线程池,容量为3,然后循环执行了4个任务,由输出结果可以看到,前3个任务首先执行完,然后空闲下来的线程去执行第4个任务,在FixedThreadPool中,有一个固定大小的池,如果当前需要执行的任务超过了池大小,那么多于的任务等待状态,直到有空闲下来的线程执行任务,而当执行的任务小于池大小,空闲的线程也不会去销毁。
- CachedThreadPool
上段代码其它地方不变,将newFixedThreadPool方法换成newCachedThreadPool方法。
输出结果:
[java] view plain copy print ?
-
第3次任务的第1次执行
-
第4次任务的第1次执行
-
第1次任务的第1次执行
-
第2次任务的第1次执行
-
第4次任务的第2次执行
-
第3次任务的第2次执行
-
第2次任务的第2次执行
-
第1次任务的第2次执行
-
第2次任务的第3次执行
-
第3次任务的第3次执行
-
第1次任务的第3次执行
-
第4次任务的第3次执行
最后
光有这些思路和搞懂单个知识的应用是还远远不够的,在Android开源框架设计思想中的知识点还是比较多的,想要搞懂还得学会整理和规划:我们常见的**Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架,**这些都是属于Android开源框架设计思想的。如下图所示:
这位阿里P8大佬针对以上知识点,熬夜整理出了一本长达1042页的完整版如何解读开源框架设计思想PDF文档,内容详细,把Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架这些知识点从源码分析到实战应用都讲的简单明了。
由于文档内容过多,篇幅受限,只能截图展示部分,更为了不影响阅读,这份文档已经打包在GitHub,有需要的朋友可以直接点此处前往免费下载。
整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)。**
[外链图片转存中…(img-ciAeKxQC-1646556916209)]
[外链图片转存中…(img-G7JsXKM1-1646556916210)]
整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
你的支持,我的动力;祝各位前程似锦,offer不断!!!