java线程池使用场景有哪些?java线程池如何工作?

Java线程池的作用可是太大了!它可以降低系统资源消耗,提高系统响应速度,方便线程并发数的管控等等,所以java线程池是我们必须要掌握的,那java线程池使用场景有哪些?下面来我们就来给大家讲解一下。

java线程池使用场景.png

1. newCachedThreadPool;

缓存线程池;适用于执行大量(并发)短期异步的任务;注意,任务量的负载要轻;

比如同时给很多人发送从磁盘读取的消息通知。

2. newFixedThreadPool;

定长线程池;适用于执行负载重,cpu使用频率高的任务;这个主要是为了防止太多线程进行大量的线程频繁切换,得不偿失;

比如同时很多人进行商品秒杀。

3. newSingleThreadExecutor;

单线程线程池; 这个一般用来执行需要按照指定顺序的任务。

4. newScheduledThreadPool;

周期定长线程池; 一般是周期性的任务,不过这个可以使用其他的替代;

这四种线程池比较常用的就是上面的两种,运用的场景也是不同的,同学们根据实际情况去选择使用即可。

java线程池如何工作?

当向线程池提交一个任务之后,线程池是如何处理这个任务的呢?下面就先来看一下它的主要处理流程。先来看下面的这张图,然后我们一步一步的来解释。

java线程池使用场景有哪些?java线程池如何工作?.png

当使用者将一个任务提交到线程池以后,线程池是这么执行的:

1.首先判断核心的线程数是否已满,如果没有满,那么就去创建一个线程去执行该任务;否则请看下一步

2.如果线程池的核心线程数已满,那么就继续判断任务队列是否已满,如果没满,那么就将任务放到任务队列中;否则请看下一步

3.如果任务队列已满,那么就判断线程池是否已满,如果没满,那么就创建线程去执行该任务;否则请看下一步;

4.如果线程池已满,那么就根据拒绝策略来做出相应的处理;

总之多线程能够解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。最后大家如果想要了解更多java入门知识,敬请关注奇Q工具网。

推荐阅读:

fastjson如何使用?fastjson使用详解

json转对象的原理是什么?json字符串转对象怎么做?

java写函数的快捷方式有哪些?Java有哪些常用快捷键?