java多线程

class lgj extends Thread
{
String l=null;
public void lgj(String s4)
{

l=s4;

}
public void run()
{

此处为107行.......... File g=new File(l);
File[] lName=g.listFiles();
for (int i=0;i {
s1=text.getText();
if(lName[i].getName()==s1)
area.append("我找到了!");
}
return;
}
}
public void tqd(File f)
{
int c=0;
File[] fileName = f.listFiles();
for(k=0; k {
if(t)break;
//area.append("\n查找......\n"+fileName[k].getName()+"\n"+fileName[k].getAbsolutePath());
if(fileName[k].isDirectory())
{
tqd(fileName[k]);
new lgj().lgj(fileName[k].getName());
if(c {
new lgj().start();
c++;
}
}
}
}
Exception in thread "Thread-7" java.lang.NullPointerException
at java.io.File.(Unknown Source)
at sosoWindow$lgj.run(soso.java:107)
为什么总是提示我空指针异常,请大家帮忙看下

4个回答

这个我觉得跟线程一点都不矛盾啊!你总归还是new了对象的不是么?跟你原先的方法都没出入,不知道你为什么这么问

那肯定是你传进去的l是NULL啦,我看你上面定义了String l=null;如果你没调用你的lgj方法那他肯定是null啊,就算你调用了这个方法,如果s4传进来就是null,那也还是null啊!建议你把最前面那个null换成“”;

[code="java"]
给点提问的智慧吧...
别人看这样的代码很累... :arrow:
[/code]

new lgj().lgj(fileName[k].getName());
if(c<32)
{
new lgj().start();
c++;
}

你可以这样写 lgj s = new lgj();
s.lgj(fileName[k].getName());

if(c<32)
{
s.start();
c++
}
你自己看出问题了么?你重新new 了一个对象,你那里面的l当然还是为NULL

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问