下面是我的文本文件 test1.txt。
AutoRefreshStoreCategories 70% 1 16 2060 10053 10106 10111
CrossPromoEditItemRule 20% 1 10107 10108 10109
CrossPromoManageRules 10% 1 10107 10108 10109
我想编写一个多线程程序,它可以逐行读取文件并通过在空格上拆分来打印一行中的每个数字(我已经完成了这部分)。在上面的文件中,我在命令名称旁边指定了一些百分比,第一行的示例,它在AutoRefreshStoreCategories旁边有 70% 。所以我希望 70% 的随机调用都转到第一行。以同样的方式第二行有 20%,所以 20% 的随机调用转到第二行。最后,对于第三行,10% 的随机调用转到第三行。对于每一行,基本上我想打印它们在每一行中的数字。
所以我在下面写了一个多线程程序,但那个程序只是打印每一行的数字,它没有考虑随机调用的百分比。我不确定我可以有什么逻辑,以便通过使用该多线程程序,我可以指定这么多百分比的随机调用转到第一行、第二行或第三行。任何帮助将不胜感激。
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();
}
}
}
}