以下は私のテキストファイル、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();
}
}
}
}