2012-04-30 37 views
2

我有基本上有两种方法的第一个接受一个String(文件名)和一个线程的类:如何针对单线程/多线程调整此设置?

public static void readFile(String s, Thread t){ 
    Runnable read = new Runnable() { 
     public void run() { 
      //SOME CODE 



} 
     t = new Thread(read); 
    t.start(); 

} 

第二种方法是,请求的输入,然后使用该用户的主方法该输入用于设置一些内容(例如,如果线程的数量仅为一个,或者如果它等于列表中的对象的数量)。

public static void main(String[] args){ 
    //SOME CODE 

    for(Object x: ListOfObjects){ 
    //t1 is the same thread each time if one thread requested, otherwise t1 is a different thread each time 
    readFromFile(textFileString, t1); 
    //SOME CODE 
} 

如果使用者请求5个线程(用于在列表5项),如何在上述修改是什么?目前,我的主要方法有一个循环(对于列表中的项目数),然后为循环中的每个迭代调用第一个方法。有没有办法获取用户请求的线程数,并且一次启动/启动第一种方法,而不是一次调用方法?

+1

尝试用更具描述性的内容替换标题中的“adjust ** this **”。 – Hawken

+0

不是第一种方法中的'Thread t'参数多余吗?你在使用它之前重写它。或者它被分配在某个代码中的某个地方? – amit

+0

是的,现在我看着它,参数是多余的。 – user1261445

回答

0

实现Runnable接口。我试过 这个,它似乎工作:

class StringThread implements Runnable 
{ 
    private String str; 
    private int num; 

    StringThread(String s, int n) 
    { 
     str = new String (s); 
     num =n; 
    } 

    public void run () 
    { 
     for (int i=1; i<=num; i++) 
      System.out.print ("THREAD NAMED: " + str+" I IS: " + 
               i + "\n"); 
    } 
} 

//IN the main program: 

StringThread t1 = new StringThread ("THR-1",100); 
new Thread(t1). start ();  
StringThread t2 = new StringThread ("THR-2",200); 
new Thread(t2). start (); 
+0

非常有帮助!谢谢。 – user1261445

+1

没有理由在那里扩展'Thread'(很少有**)。 –

+0

什么是'新的字符串'应该做的? –