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,但是你总得有个结束点吧
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)