-2

以下は私のテキストファイル、test1.txtです。

AutoRefreshStoreCategories  70%  1  16  2060    10053   10106   10111
CrossPromoEditItemRule      20%  1  10107   10108   10109
CrossPromoManageRules       10%  1  10107   10108   10109                                                                                                

ファイルを1行ずつ読み取り、空白で分割して各数値を1行に出力できるマルチスレッドプログラムを作成したかったのです(この部分は実行しました)。上記のファイルでは、コマンド名の横にパーセンテージを指定しています。最初の行の例では、AutoRefreshStoreCategoriesの横に70%があります。したがって、ランダム呼び出しの70%を最初の行に送信する必要があります。同様に、2行目は20%なので、ランダムコールの20%が2行目に行きます。そして最後に3行目では、ランダムコールの10%が3行目に行きます。そして、基本的に各行について、各行にある数字を印刷したいと思います。

そこで、以下にマルチスレッドプログラムを作成しましたが、そのプログラムは各行に数字を出力するだけで、ランダム呼び出しの割合は考慮されていません。そのマルチスレッドプログラムを使用することで、ランダム呼び出しのこれだけの割合を1行目、2行目、または3行目に指定できるように、どのロジックを使用できるかわかりません。どんな助けでもありがたいです。

    public class ExcelRead {

    private static Integer threadSize = 4;

    public static void main(String[] args) {

        for (int i = 1; i <= threadSize; i++) {
            new Thread(new ThreadTask(i)).start();
        }
    }
}


class ThreadTask implements Runnable {
    private int id;

    public ThreadTask(int id) {
        this.id = id;
    }

    public synchronized void run() {
        BufferedReader br = null;

        try {
            String sCurrentLine;

            br = new BufferedReader(new FileReader("C:\\testing\\test1.txt"));

            while ((sCurrentLine = br.readLine()) != null) {
                String[] s = sCurrentLine.split("\\s+");
                for (String split : s) {
                if(split.matches("\\d*"))
                System.out.println(split);
            }
        }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null)br.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }

    }
}
4

1 に答える 1

0

そのマルチスレッドプログラムを使用することで、ランダム呼び出しのこれだけの割合を1行目、2行目、または3行目に指定できるように、どのロジックを使用できるかわかりません。どんな助けでもありがたいです。

これは宿題(または独学)のように見えるので、コンピューターのふりをしている場合、これをどのように行うかを考えることをお勧めします。1つの部分は、クラスのjavadocを読み取り、パーセンテージ範囲に合うようにRandomランダムな値をマップする方法を理解することです。int


脚注として、これをマルチスレッドプログラムにすることで、あなたが何を達成しようとしているのか、私は戸惑っています。おそらくあなたは説明することができます。私の考えでは、それは(現在)単純なタスクをより複雑にするだけであり、パフォーマンス上の利点はありません。

于 2012-04-22T01:00:01.930 に答える