for(int i=0;i<urlVec.size();)
{
DownThread[] dt=new DownThread[threadNum];
for(int k=0;k<threadNum&&i<urlVec.size();)//一次建立threadNum个线程
{
URL urlTemp=urlVec.get(i);
DownThread t=new DownThread(urlTemp,pageVec);
dt[k]=t;//存入dt数组
t.run();
++i;
++k;
}
//下面我要等刚才建立threadNum个线程都完成之后再建立下一批线程。 for(int t=0;t<threadNum;++t)
{
if(dt[t].isAlive())//出错处
dt[t].join();
}
}//问题是跑到出错处就出错了,信息为Exception in thread "main" java.lang.NullPointerException
at Book.Test.createPage(Test.java:102)
at Book.Test.main(Test.java:64)
请大侠支招,怎么变通实现我这个目的
{
DownThread[] dt=new DownThread[threadNum];
for(int k=0;k<threadNum&&i<urlVec.size();)//一次建立threadNum个线程
{
URL urlTemp=urlVec.get(i);
DownThread t=new DownThread(urlTemp,pageVec);
dt[k]=t;//存入dt数组
t.run();
++i;
++k;
}
//下面我要等刚才建立threadNum个线程都完成之后再建立下一批线程。 for(int t=0;t<threadNum;++t)
{
if(dt[t].isAlive())//出错处
dt[t].join();
}
}//问题是跑到出错处就出错了,信息为Exception in thread "main" java.lang.NullPointerException
at Book.Test.createPage(Test.java:102)
at Book.Test.main(Test.java:64)
请大侠支招,怎么变通实现我这个目的
解决方案 »
- java非阻塞通信的问题,高手请解答
- 求一个java绘图程序,高手进!!必有重谢!!
- JInternalFrame不显示
- 一个低级的float的问题...
- 帮忙写个类,保证不难。
- java新手问题 不知如何解决散200分求 大人入!!!! 在线等 (之二)
- JDK源码中那些声明为native的方法在哪里可以看到它的源码? 谢谢!
- 虚拟机里装redhat linux为什么命令只有2081个?是什么原因造成的呢
- 再线等待,我的问题:
- ★☆★☆★☆★☆★☆★☆★☆★☆★☆JAVA版年度调查2★☆★☆★☆★☆★☆★☆★☆★☆★☆
- 新手请教一个简单的数组问题,很有代表意义,谢谢
- 在linux机器上的问题
for(int t=0;t<threadNum;++t)
{
if(dt[t]!=null&&dt[t].isAlive())//出错处
dt[t].join();
}
> 因为同时满足这两个条件才去执行循环
> 如果i<urlVec.size()小于threadNum的值
> 比urlVec.size大的数组的下标的值将不会被赋予,所以就会是空值关于 NullPointerException 的问题,vgvg 说的是对的。比如 urlVec.size() 是 10, threadNum 是 20,那么,你在前一个循环中只创建了 10 个线程对象,而在后一个循环中,却会试图去 join 20 个线程对象。
建议不连网
线程模型运行式一下(调试)