当我运行单个线程写入文件时,它需要大约400毫秒,但我运行三个或更多线程,每个线程写一个文件,大约需要1000毫秒,所有这些线程变化都变慢了,怎么办?它会发生吗?
这是我的代码
package practice.feature.java.core.thread;
import java.io.File;
import java.io.FileWriter;
public class MainEnter {
public static void main(String[] args) {
for (int i = 0; i < 1; i++) {
WriteFile file1 = new WriteFile("WriteFile" + i + ".txt");
new Thread(file1).start();
}
}
static class WriteFile implements Runnable {
private String name;
public WriteFile(String name) {
this.name = name;
}
@Override
public void run() {
Long now = System.currentTimeMillis();
File file = new File(name);
try {
file.createNewFile();
FileWriter versionWriter = new FileWriter(file, true);
for (long i = 0; i < 1000000L; i++) {
versionWriter.write(name + "****" + i);
versionWriter.write(System.getProperty("line.separator"));
}
versionWriter.flush();
versionWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
Long newnow1 = System.currentTimeMillis();
System.out.println(name + "导出时间:" + (newnow1 - now));
}
}
}
答案 0 :(得分:0)
关闭文件时,操作系统会将其刷新到磁盘。我怀疑你有一个硬盘,通常限制在40 MB / s左右。一次写入更多文件可以让您更接近磁盘的最大带宽,但是您没有看到显着的改进。
注意:SSD速度更快,但典型驱动器仍然限制在500 MB / s左右
简而言之,添加更多线程并不会加快磁盘驱动器的速度。