在将内容从对象写入文件时,我有多个线程调用一种方法,如下所示: 当我使用 1 个线程测试此方法时,预期会输出到我的文件中。但是,对于多个线程,文件的输出是混乱的。如何使这个线程安全?
void (Document doc, BufferedWriter writer){
Map<Sentence, Set<Matrix>> matrix = doc.getMatrix();
for(Sentence sentence : matrix.keySet()){
Set<Matrix> set = doc.getMatrix(sentence);
for(Matrix matrix : set){
List<Result> results = ResultGenerator.getResult();
writer.write(matrix, matrix.frequency());
writer.write(results.toString());
writer.write("\n");
}
}
}
编辑:
我添加了这一行 List<Result> results = ResultGenerator.getResult()
。我真正想要的是使用多个线程来处理这个方法调用,因为这部分很昂贵并且需要很多时间。写作部分很快,我真的不需要多线程。
鉴于此更改,有没有办法使此方法调用在并发环境中安全?