2012-04-30 8 views
2

私は最初のものは、文字列を受け取り、基本的に2つのメソッドを持つクラスを持っている(ファイル名)とスレッド:シングル/マルチスレッドの場合、これをどのように調整しますか?

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



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

} 

第2の方法は、入力をユーザに要求するメイン方法であり、その後、使用(スレッドの数が1つだけの場合や、リスト内のオブジェクトの数と等しい場合など)を設定するための入力です。

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つのアイテム)を要求した場合、どのようにこれを修正できますか?現在、私のmainメソッドはループを持ち(リスト内の項目数)、最初のメソッドがループ内の各繰り返しに対して呼び出されます。ユーザーが要求した数のスレッドを取得し、一度に1つずつではなく、一度に最初のメソッドで開始/開始する方法はありますか?

+1

あなたのタイトルの "adjust ** this **"をより説明的なものに置き換えてみてください。 – Hawken

+0

は、最初のメソッドで冗長な 'Thread t'パラメータではありませんか?あなたはそれを使用する前にそれを上書きしています。あるいは 'SOME CODE'のどこかに割り当てられていますか? – 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

「新しい文字列」は何をすべきでしょうか? –

関連する問題