当前位置: 首页 > 面试题库 >

从Java中的多个线程写入FileOutputStream

姜奇
2023-03-14
问题内容

writeFileOutputStream多个线程上调用Java 对象是否安全?输出会正确序列化吗?

澄清:

在我的情况下,类记录器拥有FileOutputStream引用,并且多个线程可以调用记录器写,从而格式化输出并调用FileOutputStream写。

我应该同步记录器的写方法以保证来自多个线程的消息不会混合吗?


问题答案:

不能多次打开文件write-mode,因此答案是否定的。

在看到您的编辑之后,是的,您应该在记录器中引入同步,以确保一次只能由一个线程访问该流。只是一个建议,为什么不选择Log4J?它已经可以处理您的用例。



 类似资料:
  • 问题内容: 我有20个线程用println()函数写入一个名为result.txt的文件。我该如何同步它们? 我注意到每次我的程序运行时,results.txt中的文本行数都会不同。 谢谢。 问题答案: 通过包含同步方法以写入文件的类访问文件。一次仅一个线程将能够执行该方法。 我认为Singleton模式适合您的问题: 每次需要写入文件时,只需调用:

  • 问题内容: 我是Python多线程的新手,目前正在编写一个附加到csv文件的脚本。如果要向提交多个线程,则将行追加到csv文件中。如果附加是这些线程执行的唯一与文件相关的操作,我该怎么做才能保证线程安全? 我的代码的简化版本: 我的线程类是: 我应该设置一个单独的单线程执行程序来处理编写,还是担心我是否只是追加? 编辑:我应该详细说明,下一次附加文件之间的分钟之间,写操作发生的时间可能会相差很大,

  • 问题内容: 我正在尝试使用多个线程在Java中编写一个大文件。 我已经尝试了Java 和类。 实际上,要写入的内容是使用和写入的整个表(Postgres)。文件中的每一行都是表中的一个元组,我一次要写100行。 编写方法: 单个待写入文件由附加模式下的多个线程打开。此后,每个线程都尝试写入文件文件。 以下是我面临的问题: 有时,文件的内容将被覆盖,即:一行仍然不完整,而下一行从那里开始。我的假设是

  • 我有多个线程在我的中运行每个线程读取一个大文件并在List中返回该文件中的数据。 代码如下所示: 现在我知道以下代码段将出现在我的代码中的某个位置,但我不知道将其放置在哪里。因为如果我在for循环中的之后放置它,它就不会添加它,因为每个文件都非常大,可能还没有完成它的处理。 那么,有谁能告诉我,我应该把这段代码放在哪里,以及我需要确保哪些其他事情,以避免出现关键部分问题。 如果我只是在线程中并行读

  • 我找到了关于线程安全的代码,但它没有来自给出示例的人的任何解释。我想知道为什么如果我不在“count”之前设置“synchronized”变量,那么count值将是非原子的(总是=200是期望的结果)。谢谢

  • 我正在开发基于spring+Hibernate的web应用程序。在这个应用程序中,我必须对数据库中的50000个可用记录进行计算。当前逻辑:- 循环0到50000(所有50000记录彼此独立) 选择第i个元素 对第i个元素执行计算(删除CALCULATION_TEMP表(如果存在),创建新表CALCULATION_TEMP并在CALCULATION_TEMP表中插入计算) 在步骤3表上进行一些计算