我在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行并停止。可能是什么问题呢
?
答案 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();