1

我在java中尝试这个程序但是当我把所有东西都放在run()方法中时我没有得到任何输出

主.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());
    }

}    

测试.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

4 回答 4

4

你必须start()你的线程。

另外,我建议在继续之前阅读有关 Java 线程和并发的优秀教程,因为它是一个复杂的主题。

于 2013-02-04T12:48:22.627 回答
1

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

顺便说一句:除非您输入的速度非常快,否则您不会看到使用线程的区别。启动线程并完成它大约需要 0.1 毫秒,因此除非您键入的速度比这快得多,否则不会有任何区别。

于 2013-02-04T12:49:08.143 回答
1

您需要启动线程:

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

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

于 2013-02-04T12:49:20.597 回答
1

你必须启动它们:

        (new Test(br.readLine())).start();
        (new Test(br.readLine())).start();
于 2013-02-04T12:49:30.793 回答