2012-01-17 37 views
0

我有一个线程类的子类。每个创建的线程应该解析字符串,但我的课的目的不是要获得从键盘输入的字符串,因为在public static void main(String[] args)我应该以这种方式创建和运行每个线程线程类的输入字符串

for (int=0;i<how_many_words;i++) 

    (new myThread()).start(); 

所以应用程序需要知道字符串的数量创建线程,所以我不能在Thread类中输入这些字符串。我如何输入这些字符串并传递给每个线程?

+0

我不明白你为什么不能从键盘上获取字符串。你能解释一下你的问题吗?输入文件怎么样?也许参数主要? – Gray 2012-01-17 21:05:42

回答

0

我不知道如果我理解正确你的问题,但我认为你需要单独的线程使用例如Scanner类内部while(true)循环和用户输入被收集后开始新Thread监听用户的输入。

Scanner scanner= new Scanner(System.in); 
SimpleDateFormat df = new SimpleDateFormat("mm/dd/yyyy"); 
df.setLenient(false); 

try { 
    while (true) { 

     String input = scanner.next(); 
     new MyThread(input).start(); 
    } 
} 
catch(Exception e) { 
    e.printStackTrace(); 
} 
0

我首先鼓励你不要子类Thread,而是实现Runnable,但是这不是真正关系到你的问题。如果我理解正确的话,你真正想要的是......

public class MyThread extends Thread { 
    private final String word; 
    public MyThread(String word) { 
     this.word = word; 
    } 
    public void run() { 
     // do something with this.word 
    } 
} 

的Javadoc线程说几乎同样的事情:http://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html

随着你的主要会是这样......

String[] splits = input.split(" "); 
for(String split : splits) { 
    (new MyThread(split)).start(); 
} 

我不知道分裂的东西是否能正常工作;你的标准是什么?另外,你应该可以调节你想在这里产生的线程数量。我强烈建议您在进入多线程Java时阅读Java Concurrency in Practice。

+0

我想我喜欢Wojtek O的一个主要样例实现。 – 2012-01-17 21:08:12

相关问题