如果你曾经使用过p2p下载软件,他们可以通过多线程下载一个文件,而且他们只创建一个文件,所以我想知道线程是如何将数据写入那个文件的。顺序还是并行?
想象一下你想将一个大的数据库表转储到一个文件中,如何让这个工作更快?
最佳答案
您可以使用多个线程将 a 写入文件,例如一个日志文件。但是你必须像@Thilo 指出的那样协调你的线程。您需要同步文件访问并且只写入整个记录/行,或者您需要制定将文件区域分配给不同线程的策略,例如重新构建一个已知偏移量和大小的文件。
出于性能原因,很少这样做,因为大多数磁盘子系统在顺序写入时性能最佳,而磁盘 IO 是瓶颈。如果 CPU 创建记录或文本行(或网络 IO)是瓶颈,它可以提供帮助。
Image that you want to dump a big database table to a file, and how to make this job faster?
按顺序写可能是最快的。
关于java - 多个线程可以同时将数据写入文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8602466/