前言
在职场论坛看到这样一个帖子,程序员小A被前公司裁员了,裁员之后也并没有特别气馁,打算重头再来,结果却被现实打击到了。
他大学毕业的时候进入到一家知名互联网公司上班,工作期间,也是不断学习,提升自己的能力,但是在自己37岁的时候,还是被公司裁员了。
他开始把简历投递到大型互联网公司,结果都因为年纪比较大给拒绝了,找了四个月工作,一直这样也不是办法,为了家人孩子,开始妥协,向小型互联网公司投递简历,万万没有想到的是,HR竟然嫌弃自己的工作能力,当他听到这句话的时候,估计都气的都冒气了!
1.线程池的好处? 四种线程池的使用场景,线程池的几个参数的理解?
参考回答:
使用线程池的好处是减少在创建和销毁线程上所花的时间以及系统资源的开销,解决资源不足的问题。如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或则“过度切换”的问题,归纳总结就是
- 重用存在的线程,减少对象创建、消亡的开销,性能佳。
- 可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。
- 提供定时执行、定期执行、单线程、并发数控制等功能。
Android中的线程池都是直接或间接通过配置ThreadPoolExecutor来实现不同特性的线程池.Android中最常见的类具有不同特性的线程池分别为:
- newCachedThreadPool:只有非核心线程,最大线程数非常大,所有线程都活动时会为新任务创建新线程,否则会利用空闲线程 ( 60s空闲时间,过了就会被回收,所以线程池中有0个线程的可能 )来处理任务.
- 优点:任何任务都会被立即执行(任务队列SynchronousQuue相当于一个空集合);比较适合执行大量的耗时较少的任务.
- newFixedThreadPool:只有核心线程,并且数量固定的,所有线程都活动时,因为队列没有限制大小,新任务会等待执行,当线程池空闲时不会释放工作线程,还会占用一定的系统资源。
- 优点:更快的响应外界请求
- newScheduledThreadPool:核心线程数固定,非核心线程(闲着没活干会被立即回收数)没有限制.
- 优点:执行定时任务以及有固定周期的重复任务
- newSingleThreadExecutor:只有一个核心线程,确保所有的任务都在同一线程中按序完成