为什么有多个线程?

时间:2017-08-31 10:08:17

标签: java multithreading

这是一个非常简单的代码,可以添加到具有多个线程的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);
        }
    }

0 个答案:

没有答案