首页 > 解决方案 > 是否可以在java中自动创建线程?取决于标准

问题描述

import java.util.*;

public class test{


public test(){
     int[] list = new int[]{1,2,3,4,5,6}; 
     ArrayList<Integer> myList  = new Arrays.asList(list);
     //list with 6 numbers that require 3 threads           
  }

public static void main(String[] args){
     new test();



 }


}

对于我列表中的每两个数字,我想要一个线程。即,如果它们是 6 个数字,则应自动检测 3 个线程。我必须怎么做才能自动创建线程?

标签: javamultithreading

解决方案


是的。普遍接受的方法是生成一个 Runnable 并将该 Runnable 提交给 ExecutorService 来为您管理线程。不要只执行松散的线程。这是一个糟糕的习惯,它使您无法控制线程。

ExecutorService service = Executors.newFixedThreadPool(5);
for (blah blahblah) {
    Runnable runnable = new Runnable() {
    ....
    }
    service.execute(runnable);
}

只要确保当您完成执行程序(或程序终止时)时,您执行

service.shutdown();

或者

service.shutdownNow();

推荐阅读