Java线程池的作用可是太大了!它可以降低系统资源消耗,提高系统响应速度,方便线程并发数的管控等等,所以java线程池是我们必须要掌握的,那java线程池使用场景有哪些?下面来我们就来给大家讲解一下。
1. newCachedThreadPool;
缓存线程池;适用于执行大量(并发)短期异步的任务;注意,任务量的负载要轻;
比如同时给很多人发送从磁盘读取的消息通知。
2. newFixedThreadPool;
定长线程池;适用于执行负载重,cpu使用频率高的任务;这个主要是为了防止太多线程进行大量的线程频繁切换,得不偿失;
比如同时很多人进行商品秒杀。
3. newSingleThreadExecutor;
单线程线程池; 这个一般用来执行需要按照指定顺序的任务。
4. newScheduledThreadPool;
周期定长线程池; 一般是周期性的任务,不过这个可以使用其他的替代;
这四种线程池比较常用的就是上面的两种,运用的场景也是不同的,同学们根据实际情况去选择使用即可。
java线程池如何工作?
当向线程池提交一个任务之后,线程池是如何处理这个任务的呢?下面就先来看一下它的主要处理流程。先来看下面的这张图,然后我们一步一步的来解释。
当使用者将一个任务提交到线程池以后,线程池是这么执行的:
1.首先判断核心的线程数是否已满,如果没有满,那么就去创建一个线程去执行该任务;否则请看下一步
2.如果线程池的核心线程数已满,那么就继续判断任务队列是否已满,如果没满,那么就将任务放到任务队列中;否则请看下一步
3.如果任务队列已满,那么就判断线程池是否已满,如果没满,那么就创建线程去执行该任务;否则请看下一步;
4.如果线程池已满,那么就根据拒绝策略来做出相应的处理;
总之多线程能够解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。最后大家如果想要了解更多java入门知识,敬请关注奇Q工具网。
推荐阅读: