(面经总结)一篇文章带你整理面试过程中关于多线程中的线程池的相关知识点

文章目录

    • 一、线程池的工作原理
    • 二、线程复用
    • 三、线程池的核心组件和核心类
    • 四、Java线程池的工作流程
    • 五、线程池的拒绝策略
    • 六、5中常用的线程池
      • 1. newCachedThreadPool
      • 2. newFixedThreadPool
      • 3. newScheduledThreadPool
      • 4. newSingleThreadExecutor
      • 5. newWorkStealingPool
    • 六、面试题

一、线程池的工作原理

线程是非常宝贵的计算资源,在每次需要时创建并在运行结束后销毁是非常浪费资源的。

Java线程池主要用于管理线程组及其运行状态,以便Java虚拟机更好地利用CPU资源。

Java线程池的工作原理为:JVM先根据用户的参数创建一定数量的可运行的线程任务,并将其放入队列中,在线程创建后启动这些任务,如果线程数量超过了最大线程数量(用户设置的线程池大小),则超出数量的线程排队等候,在有任务执行完毕后,线程池调度器会发现有可用的线程,进而再次从队列中取出任务并执行。

线程池的主要作用是线程复用、线程资源管理、控制操作系统的最大并发数,以保证系统高效(通过线程资源复用实现)且安全(通过控制最大线程并发数实现)地运行

二、线程复用

在Java中,每个Thread类都有一个start方法。在程序调用start方法启动线程时,Java虚拟机会调用该类的run方法。
前面说过,在Thread类的run方法中其实调用了Runnable对象的run方法,因此可以继承Thread类,在start方法中不断循环调用传递进来的Runnable对象,程序就会不断执行run方法中的代码。

可以将在循环方法中不

你可能感兴趣的:(冲刺大厂之面经总结,面试,java,经验分享,线程池,多线程)