0

我有一个现有的应用程序,其中多个线程正在通过输出流写入(并在其上同步)。我想知道切换到写入输出流的单一写入器原则是否可能更有效(我只是出于学术原因这样做,因为我不相信这会对应用程序性能产生太大影响,尽管我可能是错的)。目前,我只想使用阻塞队列或环形缓冲区供所有当前写入器写入,一个写入器线程(队列/环形缓冲区的消费者)写入输出流/通道。
对此的任何想法或有用的建议都将受到欢迎。

4

1 回答 1

1

如果您的系统上有足够的可用容量(空闲 CPU 时间、可用 IO 时间),那么添加一个单独的线程来仅记录 IO 将显着提高整个系统的性能。

java.util.concurrent包中添加一个队列,其中包含一堆添加到队列中的线程,以及一个从队列中读取并写出输出的日志记录线程将是一个很好的解决方案。

另一方面,如果你有一个充分利用的系统,那么队列要么变得太大,要么开销会变得很明显,而日志线程的好处将变得微不足道。

在大多数情况下,我看到单独的日志记录线程是有益的。

于 2013-10-31T22:05:17.910 回答