Java中的线程池实现原理
上文从自定义一个线程池Java线程池,简单说了线程的实现原理,本文就从Java实现的线程池说说线程池的原理。
线程池的实现原理
首先创建一个线程池,当添加一个新的任务的时候,线程池的处理流程。
、判断核心线程池是否已满,如果没满,则创建线程并执行,如果已满进行判断
、判断现在的队列是否已满,如果没满,添加到队列中,如果已满进行判断
、判断线程池是否已满,如果没满,则创建线程边执行任务,如果已满进行判断
、根据创建线程池时候的策略来处理,比如直接返回错误或直接丢弃等。
线程池的处理流程图
ThreadPoolExecutor是实现了Executor和ExecutorService接口,看下核心方法execute(),从代码和注释中可以看到上面说的流程是一致的。
方法execute()
使用线程池的好处
、减少创建和销毁线程的消耗,让线程池可以重复利用
、能够把线程集中管理,避免过度创建线程占满系统资源,还能集中管理,监控资源等。
使用线程池的方式必须正确,如果使用不当也会有引发问题。
领取专属 10元无门槛券
私享最新 技术干货