Java:多线程无法正常工作

时间:2013-02-04 12:46:44

标签: java multithreading

我在java中尝试这个程序,但是当我把所有内容都放在run()方法

中时,我没有得到任何输出

Main.java:

public class Main {

    static int line;
    static boolean ret = true;
    static BufferedReader br;

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {

            File f = new File("tere.dat");
            // boolean ret = f.createNewFile() ;
            br = new BufferedReader(new FileReader(f));

            new Test(br.readLine());
            new Test(br.readLine());
    }

}    

Test.java:

public class Test extends Thread {

    private String input;
    static int thread_count = 0;

    public Test(String l)
    {
         input = l;
    }

    public void run()
    {
        System.out.println("Checking from other class  : This was printed from file :>>");
        System.out.println(input);
        String upper = input.toUpperCase();
        System.out.println("");
        System.out.println("The String in all UpperCase :" + upper);
    }
}

我想要做的是我想使用两个线程从文件中读取行,然后显示我得到的任何内容。我是Java的新手

编辑

我没有使用start()方法。虽然使用start()后它只从文件中读取2行并停止。可能是什么问题呢 ?

4 个答案:

答案 0 :(得分:4)

你必须start()你的主题。

此外,我建议在继续之前阅读一篇关于Threads和Java并发的好教程,因为它是一个复杂的主题。

答案 1 :(得分:1)

你需要用start()开始你的线程我建议你不要扩展Thread而是实现Runnable。

BTW:除非你输入不可能快,否则你不会看到使用线程的区别。启动螺纹需要大约0.1毫秒才能完成,所以除非你输入的速度要快得多,否则没有任何区别。

答案 2 :(得分:1)

你需要启动线程:

(new Test(br.readLine())).start();

而且,你必须添加一些join来等待线程完成,因为你的主线程将在创建线程之前完成执行。

答案 3 :(得分:1)

你必须启动它们:

        (new Test(br.readLine())).start();
        (new Test(br.readLine())).start();