这是一个非常简单的代码,可以添加到具有多个线程的ArrayList,最后显示其内容。
问题: while循环无限期地显示“活动线程数:2”。第一个线程显然是主线程。什么是第二个线程?
声明: 我正在学习线程,而ArrayList的add方法可能不是线程安全的,并且有一些替代方案不是问题的本质。
public class Main {
public static void main(String[] args) {
for(int i=0;i<20;i++){
new MyThread(i);
}
while(Thread.activeCount()>1){
System.out.println("Active thread count: "+ Thread.activeCount());
}
ListClass.printList();
}
}
class MyThread extends Thread{
private int number;
public MyThread(int n)
{
number=n;
start();
}
@Override
public void run() {
ListClass.addToList(number);
}
}
class ListClass {
private static List<Integer> list = new ArrayList<>();
public static synchronized void addToList(int n){
list.add(n);
}
public static synchronized void printList(){
System.out.println(list);
}
}