Ⅰ java for循环中创建线程池
首先要明确线程池的意思,就是线程预先创建好放在一个池里面,使用后不会销毁
要区分任务和线程池,任务可以不断添加,但是线程池里线程的个数是固定的,当任务数超过线程数后,后面的任务需要等待有空闲的线程才会执行
所以不断添加任务没有关系,如果池中有50个线程,你添加100个任务同一时间也只会执行50个任务,剩下的50个任务需要等待前面的任务执行完毕后继续执行
所以你的主线程原则上可以不断for,但是你总得有个结束点吧
Ⅱ java四种线程池创建
Java提供了多种线程池创建方式,以适应不同的并发需求。首先,newFixedThreadPool是创建一个固定大小的核心线程池,适合控制并发数,新任务按顺序排队等待执行。其次,newSingleThreadExecutor确保任务顺序执行,适合需要任务按提交顺序处理的场景。
对于执行大量短期异步任务,newCachedThreadPool则是自动调整大小的线程池,线程数量随任务需求动态增减。另外,newScheledThreadPool则支持定时和周期性任务,核心线程固定且能处理ScheledTask,如定时执行或周期执行。
然而,DelayedWorkQueue并非线程池本身,而是Java并发包中的接口,用于表示支持延迟元素的工作队列。DelayedQueue是其实现之一,如DelayedWorkQueue接口中的getDelay方法,用于处理具有时间限制的任务,如定时任务的调度。
总的来说,Java的线程池类型丰富多样,开发者可以根据任务的特性选择最合适的线程池来优化并发性能和资源管理。