我正在通过多个线程写入一个文件,因此我使用以下代码:
synchronized (this) {
BufferedWriter bw = new BufferedWriter(
new FileWriter(path, true));
bw.write(data);
}
出于教育目的,我想知道如何使用一些同步器(信号量、倒计时锁存器、循环载波器、相位器或交换器)基本上实现相同的功能:安全的多线程写入。
谢谢
1条答案
按热度按时间nafvub8i1#
老实说,从多个源向同一个writer写入的更好的近乎重复的方法是使用(阻塞)队列。这样,所有线程都可以将其消息放到队列中,而writer线程可以从队列中提取消息并将其写入文件。它通常更容易实现,也更高效
--编辑--
例子:
然后添加到队列:
那就