![](/img/trans.png)
[英]Java: how to generate a new thread? Not how to generate a new thread to use
[英]How to use multiple thread to generate data?
我嘗試使用多個線程生成數據集
我嘗試在下面創建一個Runnable和幾個線程
public class DataGenerator {
static int currentRow = 0 ;
static PrintWriter pw ;
public static void main(String[] args) throws FileNotFoundException {
File file = new File("Test3.csv") ;
pw = new PrintWriter(file);
pw.println("var1,var2,var3") ;
Thread t1 = new Thread(new MyRunnable()) ;
Thread t2 = new Thread(new MyRunnable()) ;
t1.start();
t2.start();
t1.join();
t2.join();
pw.close();
System.exit(0) ;
}
}
class MyRunnable implements Runnable {
public void run () {
for ( int i = DataGenerator.currentRow; i < 50000000; DataGenerator.currentRow ++ ) {
DataGenerator.pw.println(i + ",19:05.1,some text");
System.out.println(i);
}
}
}
但是正在循環o
我不知道為什么
在子線程t1
和t2
可以使用它打印之前,您的父線程將關閉PrintWriter pw
。 啟動子線程后,需要讓父線程調用wait()
。
您應該查看如何使Java線程等待另一個線程的輸出的答案? 尋求幫助。 您可以使用此信息從代碼角度發現如何解決此問題。 這很簡單。
注意:自發布此答案以來,您已經編輯了問題; 以下問題的答案更為相關: 等待子線程完成:Java
您應該閱讀的其他有用的SO問題以及適用的答案:
另請參見Java並發教程 。
當啟動線程時,它將使線程在其自己的線程中啟動。 所以發生的事情是,它啟動了線程,然后在線程有機會啟動之前直接進入下一個調用pw.close()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.