Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用多线程从数据库读取数据并写入文件_Java_Multithreading_Executorservice - Fatal编程技术网

Java 使用多线程从数据库读取数据并写入文件

Java 使用多线程从数据库读取数据并写入文件,java,multithreading,executorservice,Java,Multithreading,Executorservice,我想开发一个从数据库读取数据并写入文件的程序。 为了获得更好的性能,我想使用多线程 我计划实施的解决方案基于以下假设: 不必放置多个线程从数据库中读取,因为DBMS需要管理并发性问题(类似于写入文件)。假设数据库中的每个读取元素都将在同一事务中删除 使用模型生产者消费者:一个线程来读取数据(主程序)。和另一个线程将数据写入文件 对于实现,我将使用executor框架:一个线程池(size=1)来表示使用者线程 这些假设能成为一个好的解决方案吗? 这个问题需要基于多线程的解决方案吗?这更像是一个评

我想开发一个从数据库读取数据并写入文件的程序。 为了获得更好的性能,我想使用多线程

我计划实施的解决方案基于以下假设:

  • 不必放置多个线程从数据库中读取,因为DBMS需要管理并发性问题(类似于写入文件)。假设数据库中的每个读取元素都将在同一事务中删除
  • 使用模型生产者消费者:一个线程来读取数据(主程序)。和另一个线程将数据写入文件
  • 对于实现,我将使用executor框架:一个线程池(size=1)来表示使用者线程
  • 这些假设能成为一个好的解决方案吗?
    这个问题需要基于多线程的解决方案吗?

    这更像是一个评论:

    对于您的第一个假设:您应该在上发布db部分

    返回一个简单的搜索: -所以,您需要检查您的读取操作是否足够复杂,以及多线程是否能够满足您对数据库连接的需求


    此外,您的程序似乎是顺序读写的。我认为您甚至不需要多线程处理,除非您希望在同一时间对同一文件进行多次写入。

    这更像是一个注释:

    对于您的第一个假设:您应该在上发布db部分

    返回一个简单的搜索: -所以,您需要检查您的读取操作是否足够复杂,以及多线程是否能够满足您对数据库连接的需求


    而且,您的程序似乎是顺序读写的。我认为你甚至不需要多线程,除非你想在同一时间对同一个文件进行多次写入。

    你应该看看SpringBatch,它与JSR352规范有关


    这个框架提供了非常好的模式来管理ETL相关的操作,包括多线程处理、数据分区等。

    您应该看看SpringBatch,它与JSR352规范相关

    这个框架提供了非常好的模式来管理ETL相关的操作,包括多线程处理、数据分区等

    不必放置多个线程从数据库中读取,因为DBMS需要管理并发性问题

    嗯。因此,您需要一个从数据库读取的线程

    这些假设能成为一个好的解决方案吗?这个问题是否需要基于多线程的解决方案

    您的解决方案将起作用,但正如其他人所提到的,对于性能改进(如果有的话)存在疑问。线程程序之所以有效,是因为您可以使用计算机上的多处理器(或核心)硬件。在您的情况下,如果线程被数据库或文件系统阻塞,那么性能改进可能是最小的。如果您正在对数据进行大量处理,那么让多个线程处理该任务会很好

    不必放置多个线程从数据库中读取,因为DBMS需要管理并发性问题

    嗯。因此,您需要一个从数据库读取的线程

    这些假设能成为一个好的解决方案吗?这个问题是否需要基于多线程的解决方案


    您的解决方案将起作用,但正如其他人所提到的,对于性能改进(如果有的话)存在疑问。线程程序之所以有效,是因为您可以使用计算机上的多处理器(或核心)硬件。在您的情况下,如果线程被数据库或文件系统阻塞,那么性能改进可能是最小的。如果您对数据进行了大量处理,那么让多个线程处理该任务会很好。

    我认为这不是这个问题的编写位置。编写单个文件几乎总是最好作为单线程问题来处理。@SamOrozco write place?我不明白@erickson你的意思是,最好是从数据库中读取所有数据,然后一次性将其写入文件?在写入之前不必读取所有数据。你可以一次写一条记录。我不认为这里是这个问题的写区。写一个文件几乎总是最好作为一个单线程问题来处理。@SamOrozco write-place?我不明白@erickson你的意思是,最好是从数据库中读取所有数据,然后一次性将其写入文件?在写入之前不必读取所有数据。你可以一次写一条记录。