面试题:线程池有几种实现方式,线程池的七大参数有哪些?在Java编码的过程中求解七参数java代码,求解七参数java代码我们经常会创建一个线程来提高程序的执行效率求解七参数java代码 , 虽然这样实现起来很方便求解七参数java代码,但是会有一个问题:如果并发的线程数多,并且每个线程都是执行一个时间很短的任务就结束了,这样会造成频繁的创建和销毁线程从而导致降低系统的效率 。
那么问题来了,有没有办法可用复用创建好的线程呢 , 也就是线程执行完一个任务后,不被销毁,继续执行其他的任务?
在Java可以通过线程池来实现这样的效果 。
下面从三个方面和大家一起来探讨一下Java线程池相关的内容 。
1.Java中的ThreadPoolExecutor类 。
2.Java中4种线程池的使用 。
3.Java线程池常用参数如何设置 。
一、Java中的ThreadPoolExecutor类
A.ThreadPoolExecutor的重要参数
1.corePoolSize:核心线程数
核心线程会一直存活 , 及时没有任务需要执行 。
当线程数小于核心线程数时,即使有线程空闲 , 线程池也会优先创建新线程处理 。
设置allowCoreThreadTimeout=true(默认false)时 , 核心线程会超时关闭 。
2.queueCapacity:任务队列容量(阻塞队列)
当核心线程数达到最大时,新任务会放在队列中排队等待执行 。
3.maxPoolSize:最大线程数
当线程数=corePoolSize,且任务队列已满时 。线程池会创建新线程来处理任务 。
当线程数=maxPoolSize,且任务队列已满时,线程池会拒绝处理任务而抛出异常 。
4.keepAliveTime:线程空闲时间
当线程空闲时间达到keepAliveTime时 , 线程会退出,直到线程数量=corePoolSize 。
如果allowCoreThreadTimeout=true , 则会直到线程数量=0 。
5.allowCoreThreadTimeout:允许核心线程超时
6.rejectedExecutionHandler:任务拒绝处理器 。
B.ThreadPoolExecutor执行过程
1.当线程数小于核心线程数时,创建线程 。
2.当线程数大于等于核心线程数,且任务队列未满时,将任务放入任务队列 。
3.当线程数大于等于核心线程数,且任务队列已满 。(1)若线程数小于最大线程数,创建线程 。(2)若线程数等于最大线程数,抛出异常 , 拒绝任务 。
二、Java中4种线程池
Java通过Executors提供四种线程池,分别为:
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程 。
newFixedThreadPool 创建一个定长线程池 , 可控制线程最大并发数,超出的线程会在队列中等待 。
newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行 。
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行 。
线程池有几种实现方式 , 线程池的七大参数有哪些?一:创建大小不固定的线程池
二:创建固定数量线程的线程池
三:创建单线程的线程池
四:创建定时线程
1.创建大小不固定的线程池
[java] view plain copy
package com.peace.pms.Test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @Author: cxx
* @Date: 2018/3/3 17:16
*/
public class ThreadPoolDemo {
public static class Taskdemo implements Runnable{
@Override
public void run() {
for(int i=0;i10;i++){
System.out.println(Thread.currentThread().getName()+":"+i);
推荐阅读
- 山寨chatgpt别再用了,山寨xtol
- 显卡用不上力怎么办,显卡不好使
- 关于html5视频相关元素的信息
- 剪接视频有什么歌曲,剪接视频有什么歌曲好听
- vb.net亮度 vb 窗口调整大小
- 二手小米路由器3怎么设置,二手小米路由器3怎么设置网速
- ppt中如何加入座标,ppt里如何添加坐标图
- 利用chatgpt帮助选股,ttm选股
- 软件java代码行数 java代码运行结果怎么显示