以下是我的文本文件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();
}
}
}
}
這功課嗎?或者更普遍的是「學習練習」? – 2012-04-22 00:51:20
順便說一句,調用run()不會啓動一個新的線程。你必須調用start()而不是 – 2012-04-22 00:52:01
我知道調用run不會啓動一個新線程,我只是按順序運行它。 – AKIWEB 2012-04-22 00:53:31