java for循环中创建线程池

首先要明确线程池的意思,就是线程预先创建好放在一个池里面,使用后不会销毁 要区分任务和线程池,任务可以不断添加,但是线程池里线程的个数是固定的,当任务数超过线程数后,后面的任务需要等待有空闲的线程才会执行 所以不断添加任务没有关系,如果池中有50个线程,你添加100个任务同一时间也只会...
java for循环中创建线程池
ThreadPoolExecutor的构造方法如下:
corePoolSize 核心线程池大小
maximumPoolSize 最大线程池大小
keepAliveTime 线程池中超过corePoolSize数目的空闲线程最大存活时间;可以allowCoreThreadTimeOut(true)使得核心线程有效时间
TimeUnit keepAliveTime时间单位
workQueue 阻塞任务队列
threadFactory 新建线程工厂
RejectedExecutionHandler 当提交任务数超过maxmumPoolSize+workQueue之和时,任务会交给RejectedExecutionHandler来处理
可以通过设置maximumPoolSize的大小,来控制最大长度,超过长度以后,可以通过RejectedExecutionHandler,进行处理,或者可以在主线程catch住RejectedExecution,然后将主线程sleep一段时间,重新执行任务,如果还是Reject,继续sleep2017-12-26
首先要明确线程池的意思,就是线程预先创建好放在一个池里面,使用后不会销毁
要区分任务和线程池,任务可以不断添加,但是线程池里线程的个数是固定的,当任务数超过线程数后,后面的任务需要等待有空闲的线程才会执行
所以不断添加任务没有关系,如果池中有50个线程,你添加100个任务同一时间也只会执行50个任务,剩下的50个任务需要等待前面的任务执行完毕后继续执行
所以你的主线程原则上可以不断for,但是你总得有个结束点吧
2017-12-26
mengvlog 阅读 6 次 更新于 2025-07-19 06:54:11 我来答关注问题0
檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部