簡體   English   中英

用一個編寫器線程(Java)替換寫入輸出流的多個線程

[英]replacing multiple threads writing to outputstream with one writer thread (Java)

我有一個現有的應用程序,其中多個線程通過一個outputstream編寫(並在其上同步)。 我想知道切換到單一編寫器原則以寫入輸出流是否會更有效(我只是出於學術原因這樣做,因為我不相信這會嚴重影響應用程序性能,盡管我可能錯了)。 就目前而言,我只在考慮使用阻塞隊列或環形緩沖區供所有當前寫入器寫入,並使用一個寫入器線程(隊列/環形緩沖區使用)寫入輸出流/通道。
任何對此的想法或有用的建議都將受到歡迎。

如果系統上有足夠的可用容量(空閑CPU時間,可用IO時間),則添加單獨的線程僅執行日志IO將顯着提高整個系統的性能。

java.util.concurrent包中添加一個隊列,並添加一堆添加到隊列中的線程,並從該隊列中讀取並寫出輸出的日志記錄線程將是一個很好的解決方案。

另一方面,如果您具有充分利用的系統,則隊列將變得太大,或者開銷將變得明顯,並且日志線程的好處將變得微不足道。

在大多數情況下,我看到一個單獨的日志記錄線程是有益的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM