繁体   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