无法在java线程内创建for循环 - 为什么?

时间:2009-10-08 15:50:55

标签: java multithreading

我的代码如下

public void incomingMessageThread() throws FileNotFoundException, IOException
{
    new Thread()
    {

        BuildData a = new BuildData();
        for(int i = 0; i<100; i++)
        {
            a.parseDataFile("_"+i+"/outgoingMessages");
        }

    }.start();

}

我被告知这是非法的开始。如果我在线程外部运行代码,它可以正常工作。任何想法都错了吗?

3 个答案:

答案 0 :(得分:11)

您正在使用类中的语句和方法之外的语句。

来自Thread.run的{​​{3}}:“线程的子类应覆盖此方法。”

public void incomingMessageThread() throws FileNotFoundException, IOException
{
    new Thread()
    {
        public void run()
        {
            BuildData a = new BuildData();
            for(int i = 0; i<100; i++)
            {
                a.parseDataFile("_"+i+"/outgoingMessages");
            }
        }

    }.start();

}

答案 1 :(得分:4)

你应该写这样的东西(实现void run())

public void incomingMessageThread() throws FileNotFoundException, IOException
{
Thread t= new Thread()
    {
    public void run()
        {
        BuildData a = new BuildData();
        for(int i = 0; i<100; i++)
          {
            a.parseDataFile("_"+i+"/outgoingMessages");
           }
        }
    };
t.start();
}

答案 2 :(得分:0)

线程是一个类而不是一个函数(这是你上面的语法类似的壁橱)

你的代码应该是

class MyThread : public Thread {
 public void run() {
    // code
 }
}

Thread t = new MyThread();
t.run()