簡體   English   中英

如何使用多線程生成數據?

[英]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

我不知道為什么

在子線程t1t2可以使用它打印之前,您的父線程將關閉PrintWriter pw 啟動子線程后,需要讓父線程調用wait()

您應該查看如何使Java線程等待另一個線程的輸出的答案 尋求幫助。 您可以使用此信息從代碼角度發現如何解決此問題。 這很簡單。

注意:自發布此答案以來,您已經編輯了問題; 以下問題的答案更為相關: 等待子線程完成:Java

您應該閱讀的其他有用的SO問題以及適用的答案:

另請參見Java並發教程

當啟動線程時,它將使線程在其自己的線程中啟動。 所以發生的事情是,它啟動了線程,然后在線程有機會啟動之前直接進入下一個調用pw.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM