这段代码中有些地方不明白,请教大家:
//循环创建线程
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到什么地方?
各位高手能不能给这段程序一个关键部分的讲解?
谢谢大家了!
//循环创建线程
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到什么地方?
各位高手能不能给这段程序一个关键部分的讲解?
谢谢大家了!
解决方案 »
- java 绘图GUI
- 关于有返回值无返回值的意思,我一直没明白,帮帮我
- 我所有的分啦 大家帮帮慢啊,想找本JAVA实践方面的书.高手给介绍几本啊,在线等,只要是好书,立刻结分
- 请问如果不支持DocFlavor参数是TEXT_HTML_UTF_8类型的打印,用java怎样实现打印阿?
- 谁能告诉我最后一句话是什么意思啊?
- 如何用类似g.drawline()的方法画一条比较粗的线?
- 求jfreechart的资料
- 用JAVA做什么???
- 为什么我的applet可以在appletviewer上运行,但不能在ie里运行!?
- 利用Applet做Client,打开一个Socket连接,则出现java.security.AccessControlException: access denied 问题,有什么简便的方法解决???救命啊,立刻给分啊~~
- 连接sql server 2000问题
- java打包生成可执行文件
跟java虚拟机有关么?
不是程序中设定的啊