Java线程(六):线程池,腾讯android面试题社招

  1. 创建一个可安排在给定延迟后运行命令或者定期地执行的线程池。

[java]  view plain copy print ?

  1. ScheduledExecutorService threadPool = Executors.newScheduledThreadPool(3);// 效果类似于Timer定时器

每种线程池都有不同的使用场景,下面看一下这四种线程池使用起来有什么不同。

  1. FixedThreadPool

[java]  view plain copy print ?

  1. import java.util.concurrent.ExecutorService;

  2. import java.util.concurrent.Executors;

  3. public class ThreadPoolTest {

  4. public static void main(String[] args) {

  5. ExecutorService threadPool = Executors.newFixedThreadPool(3);

  6. for(int i = 1; i < 5; i++) {

  7. final int taskID = i;

  8. threadPool.execute(new Runnable() {

  9. public void run() {

  10. for(int i = 1; i < 5; i++) {

  11. try {

  12. Thread.sleep(20);// 为了测试出效果,让每次任务执行都需要一定时间

  13. } catch (InterruptedException e) {

  14. e.printStackTrace();

  15. }

  16. System.out.println(“第” + taskID + “次任务的第” + i + “次执行”);

  17. }

  18. }

  19. });

  20. }

  21. threadPool.shutdown();// 任务执行完毕,关闭线程池

  22. }

  23. }

输出结果:

[java]  view plain copy print ?

  1. 第1次任务的第1次执行

  2. 第2次任务的第1次执行

  3. 第3次任务的第1次执行

  4. 第2次任务的第2次执行

  5. 第3次任务的第2次执行

  6. 第1次任务的第2次执行

  7. 第3次任务的第3次执行

  8. 第1次任务的第3次执行

  9. 第2次任务的第3次执行

  10. 第3次任务的第4次执行

  11. 第2次任务的第4次执行

  12. 第1次任务的第4次执行

  13. 第4次任务的第1次执行

  14. 第4次任务的第2次执行

  15. 第4次任务的第3次执行

  16. 第4次任务的第4次执行

上段代码中,创建了一个固定大小的线程池,容量为3,然后循环执行了4个任务,由输出结果可以看到,前3个任务首先执行完,然后空闲下来的线程去执行第4个任务,在FixedThreadPool中,有一个固定大小的池,如果当前需要执行的任务超过了池大小,那么多于的任务等待状态,直到有空闲下来的线程执行任务,而当执行的任务小于池大小,空闲的线程也不会去销毁。

  1. CachedThreadPool

上段代码其它地方不变,将newFixedThreadPool方法换成newCachedThreadPool方法。

输出结果:

[java]  view plain copy print ?

  1. 第3次任务的第1次执行

  2. 第4次任务的第1次执行

  3. 第1次任务的第1次执行

  4. 第2次任务的第1次执行

  5. 第4次任务的第2次执行

  6. 第3次任务的第2次执行

  7. 第2次任务的第2次执行

  8. 第1次任务的第2次执行

  9. 第2次任务的第3次执行

  10. 第3次任务的第3次执行

  11. 第1次任务的第3次执行

  12. 第4次任务的第3次执行

最后

光有这些思路和搞懂单个知识的应用是还远远不够的,在Android开源框架设计思想中的知识点还是比较多的,想要搞懂还得学会整理和规划:我们常见的**Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架,**这些都是属于Android开源框架设计思想的。如下图所示:

Java线程(六):线程池,腾讯android面试题社招_第1张图片

这位阿里P8大佬针对以上知识点,熬夜整理出了一本长达1042页的完整版如何解读开源框架设计思想PDF文档,内容详细,把Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架这些知识点从源码分析到实战应用都讲的简单明了。

由于文档内容过多,篇幅受限,只能截图展示部分,更为了不影响阅读,这份文档已经打包在GitHub,有需要的朋友可以直接点此处前往免费下载。

Java线程(六):线程池,腾讯android面试题社招_第2张图片

Java线程(六):线程池,腾讯android面试题社招_第3张图片

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)。**

[外链图片转存中…(img-ciAeKxQC-1646556916209)]

[外链图片转存中…(img-G7JsXKM1-1646556916210)]

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!

你可能感兴趣的:(程序员,架构,面试)