这段代码中有些地方不明白,请教大家:   
 //循环创建线程
        int i = 0;//记录共运行的线程数
        int flag = 0;//判断是否所有线程全部启动完成
        //死循环运行,直到所有下载的线程全部完成
        for(;;){
         
          System.out.println("Thread.activeCount:" + Thread.activeCount());//+++++++++
          //初始线程为7个线程,同时只允许有三个下载线程
          if((Thread.activeCount() <= (7 + 3)) && flag == 0){
            //创建线程
            MyThread downThread = new MyThread(net1.strUrl[i],downrule.strNum[i]);
            downThread.start();
            i++;
            System.out.println("i:" + i);
            if(i == net1.EnterCount){
              flag = 1;
            }
          }
          else if((Thread.activeCount() <= (7 + 3)) && flag == 1){
            //剩余最后线程数少于9个线程,直到所有下载线程结束退出循环
            Thread.sleep(1000);
            if(Thread.activeCount() <= 9){
              break;
            }
          }
          else{
            Thread.sleep(1000);
          }
        }
        System.out.println("OK!!!OK!!!");
        Object[] options = {"确定"};这段代码中关于线程个数控制得部分是怎么实现得?
具体比如sleep函数起了什么样得作用?
初始线程个数是怎么确定的?
break到什么地方?
各位高手能不能给这段程序一个关键部分的讲解?
谢谢大家了!