如何在for循环中使用多线程

如何在for循环中使用多线程,第1张

import java.util.concurrent.Executor

import java.util.concurrent.Executors

public class Test {

private final static Executor executor = Executors.newCachedThreadPool()//启用多线程

public static void main(String[] args) {

for(int i=0i<=3i++){

final int j=i //关键是这一句代码,将 i 转化为 j,这样j 还是final类型的参与线程

executor.execute(new Runnable() {

@Override

public void run() {

try{

System.out.println(j)

}catch(Exception e){

}

}

})

}

}

}

首先要明确线程池的意思,就是线程预先创建好放在一个池里面,使用后不会销毁

要区分任务和线程池,任务可以不断添加,但是线程池里线程的个数是固定的,当任务数超过线程数后,后面的任务需要等待有空闲的线程才会执行

所以不断添加任务没有关系,如果池中有50个线程,你添加100个任务同一时间也只会执行50个任务,剩下的50个任务需要等待前面的任务执行完毕后继续执行

所以你的主线程原则上可以不断for,但是你总得有个结束点吧


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11629297.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存