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

本文介绍了Java线程池的使用,包括ScheduledExecutorService和FixedThreadPool。通过示例展示了它们在处理任务队列时的区别。在FixedThreadPool中,线程数量固定,超出的任务会等待。而ScheduledExecutorService可用于定时或周期性任务。文章强调理解并掌握线程池对于Android开发者的重要性,并提到了Android开源框架的设计思想。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  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开源框架设计思想的。如下图所示:

image

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

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

image

image

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

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值