【校招VIP】java语言考点之线程池相关

考点介绍:
线程池相关内容在大厂面试中出现频率很高。线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。

java语言考点之线程池相关-相关题目及解析内容可点击文章末尾链接查看!

一、考点试题

1.为什么要有线程池(阿里面试题)
解答:
(1) 降低资源消耗。 通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
(2) 提高响应速度。 当任务到达时,任务可以不需要等到线程创建就能立即执行。
(3) 提高线程的可管理性。 线程是稀缺资源......

2.线程池有哪几类?有什么区别?有哪些参数?拒绝策略有哪些(阿里面试题)
解答:常用的JAVA线程池有以下几种类型:
1、newCachedThreadPool
创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
这种类型的线程池特点是:工作线程的创建数量几乎没有限制(其实也有限制的,数目为Interger. MAX_VALUE), 这样可灵活的往线程池中添加线程......

3.请列举一下启动线程有哪几种方式,之后再说明一下线程池的种类都有哪些?
解答:要启动的可以分为两类:
返回结果和不返回结果。对于这两种,也分别有两种启动线程的方式:
1)继承Thread类,重载run()
2)实现Runnable接口,实现run()
3)实现Callable接口通过FutureTask包装器来创建Thread线程、使用ExecutorService、Callable、Future实现有返回结果的线程......

4.创建线程池的几个核心构造参数

// Java线程池的完整构造函数
public ThreadPoolExecutor(
  int corePoolSize, // 线程池长期维持的最小线程数,即使线程处于Idle状态,也不会回收。
  int maximumPoolSize, // 线程数的上限
  long keepAliveTime, // 线程最大生命周期。
  TimeUnit unit, //时间单位                                 
  BlockingQueue workQueue, //任务队列。当线程池中的线程都处于运行状态,而此时任务数量继续增加,则需要一个容器来容纳这些任务,这就是任务队列。
  ThreadFactory threadFactory, // 线程工厂。定义如何启动一个线程,可以设置线程名称,并且可以确认是否是后台线程等。
  RejectedExecutionHandler handler // 拒绝任务处理器。由于超出线程数量和队列容量而对继续增加的任务进行处理的程序。
)


二、考点文章

1.Java线程池的使用
 在进入主题之前,我们先了解一下线程池的基本概念。
1、线程池,本质上是一种对象池,用于管理线程资源。
2、在任务执行前,需要从线程池中拿出线程来执行。
3、在任务执行完成之后,需要把线程放回线程池。
4、通过线程的这种反复利用机制,可以有效地避免直接创建线程所带来的坏处......

2.线程池,这一篇或许就够了
为什么用线程池
1、创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率
例如:
记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3
如果T1+T3>T2,那么是不是说开启一个线程来执行这个任务太不划算了!
正好,线程池缓存线程,可用已有的闲置线程来执行新任务,避免了T1+T3带来的系统开销......

3.击穿线程池面试题:3大方法,7大参数,4种拒绝策略
程序运行的本质就是:占用系统资源! 资源的竞争就会影响程序的运行,势必要优化资源的利用。
例如:池化技术的诞生!常见的有:Java中的对象池、内存池、jdbc连接池、线程池等等
池化技术的原理:事先准备好资源,有人要用,就来我这里拿,用完再还给我!
我们知道创建、销毁线程十分浪费资源,不仅产生额外开销,还降低了计算机性能。使用线程池来管理线程,大白话总结就是:线程可复用,可控制最大并发数,线程方便管理......

三、考点视频

多线程执行下列代码后的值
本题是一道笔试题,属于偏复杂、对时间要求高的题型。主要是具化多线程,把临界点和对应的多线程起始位置画出来......

java语言考点之线程池相关-相关题目及解析内容可点击下方链接查看:
java语言考点之线程池相关
java语言考点之线程池相关

【校招VIP】java语言考点之线程池相关_第1张图片

你可能感兴趣的:(Java专题,java,开发语言)