Java线程池
2021-01-11 09:33
标签:workqueue pool unp 多个 任务 imu adp ali 构造 java线程池 1.newFixedThreadPool(int nThreads) 指定工作线程数量的线程池 2.newCacheThreadPool() 处理大量短时间工作任务的线程池 (1)试图缓存线程并且重用,当没有缓存线程可用的时候,就会创建新的工作线程 (2)如果线程闲置的时候超过阀值,则会被终止并移出缓存 (3)系统长时间闲置的时候,不会消耗资源 3.newSingleThreadExecutor() 创建唯一的工作线程执行任务,如果线程异常结束,会有另一个线程取代他 4.newSingleThreadScheduledExecutor()与newScheduledThreadPool(int corePoolSize) 定时或者周期性的工作调度,两者的区别在于是单一的工作线程还是多个线程 使用线程池的好处: 1降低消耗 2. 提高线程的客观理性 5.ThreadPoolExecutor的构造函数 corePoolSize 核心数量 maxmunPoolSize 线程不够的时候能够创建的最大线程数 workWQueue:任务等待队列 keepAliveTime:抢占的顺序不一定,看运气 threadFactory:创建新的线程 6.新任务新提交executor执行后的判断: 如果线程池中的线程数量大于或者等于corePoolSize,但是小于maximumPoolSize,则只有当workQueue满的时候,回去创建新的线程去处理任务 如果设置的corePoolSize和maximumPoolSize相同,则创建的线程池的大小是固定的,这个时候,如果有新的任务提交,若workQueue未满,则会先提交到workQueue中,等待空闲的线程去workQueue获取任务并且处理 如果运行的线程数量大于等于maximumPoolSize,如果workQueue已经满了,则会通过handler所指定的策略处理任务 Java线程池 标签:workqueue pool unp 多个 任务 imu adp ali 构造 原文地址:https://www.cnblogs.com/yyfyl/p/12956960.html
如果运行的线程少于corePoolSize,则创建新的线程来处理任务,即使线程池中的线程是空闲的