我正在創建多個線程,並且所有線程都讀取同一個屬性文件(對屬性文件沒有寫入操作)。這是否會導致性能開銷,因爲多個線程多次讀取同一個屬性文件?多個線程在Java中讀取同一個屬性文件會導致性能問題嗎?
回答
我建議load the properties file一次,由所有線程使用相同的Properties實例。
負載一次減少磁盤訪問:
- 更好的性能,這種應用
- 更好的可用性整個系統的
多讀書是不是併發問題。
的didierc註釋突出一個可能的瓶頸:每次訪問屬性是同步的,因此,當線程讀取值,所有其他可以等待。
爲了避免這種情況,你可能會在限制你的線程的構造函數或初始化使用Properties
的。請勿在Thread.run()
方法內的循環中使用p.getProperty(XXX)
。
它是多線程共享的同一個屬性對象引用,它可能會導致問題嗎? –
@raghuramgururajan這是你的選擇。你可以嘗試這兩種解決方案,看看在速度和內存消耗方面什麼效果最好,但是如果你想避免同時訪問同一個對象實例,恐怕你必須明確地複製線程中的屬性列表。請注意,'Properties'從'Hashtable'繼承,它是同步的。 – didierc
答案是「視情況而定」。主要取決於每個線程除了讀取屬性文件外還有多少工作。如果每個線程除了讀取文件外還有很多工作,性能不會受到太大影響。
你應該更關注潛在的正確性問題:如果不同的線程使用不同的屬性,將程序的行爲是否正確?如果沒有,你的程序就有一個種族危害錯誤:如果程序運行時屬性文件被修改(或刪除),某些線程可能會使用不同的屬性,從而產生錯誤的計算結果。
屬性文件用於程序配置。程序通常會在開始之後立即讀取所有配置信息,然後再進行任何實際工作。如果配置是可能faulty.You應該做同樣的,處理線程的產卵作爲實際工作做以後,他們可以因此快速失敗。這還可以確保程序的用戶在配置中每個錯誤只收到一條錯誤消息,而不是每個線程消息一條。
- 1. 多線程讀取會導致性能下降嗎?
- 2. NSRunAlertPanel導致多線程性能問題
- 3. 執行2個或多個Runnables會導致性能問題
- 4. 可以使用多個觸發器導致性能問題嗎?
- 5. 多個線程同時調用相同的對象。它會導致問題嗎?
- 6. 不可變性會導致性能問題嗎?
- 7. 使用線程提高磁盤讀取性能(多個文件)
- 8. 在JavaScript中使用Double Equals會導致性能問題嗎?
- 9. Java中的多線程導致問題
- 10. Maven,使用屬性文件讀取另一個屬性文件
- 11. 多線程性能問題
- 12. 多線程性能問題
- 13. Ant從一個zip文件中讀取一個屬性文件
- 14. java多線程編程內存一致性問題
- 15. CallableStatement.close()會導致性能問題
- 16. 字體會導致性能問題
- 17. 通過streamreader讀取多個java屬性
- 18. 在java中讀取屬性文件
- 19. NullPointerExceptions在停止發生後會導致Tomcat性能問題嗎?
- 20. 從java屬性文件中讀取一個int []
- 21. Java多線程文件下載性能
- 22. 不需要的額外jar文件會導致性能問題
- 23. 如何使用java加載和讀取多個屬性文件
- 24. 經常讀/寫一個小文件會降低性能嗎?
- 25. Java屬性文件使用多行一個屬性
- 26. 圖像的哪些屬性可能會導致尺寸問題?
- 27. 文件夾中有多個文件會影響性能嗎?
- 28. 我如何從一個網站用java讀取屬性文件?
- 29. 由於多個日期字段導致的MySQL性能問題
- 30. 蟒多個線程性能
你多久閱讀一次這個文件? –
只要你不寫,我不會說會有任何併發問題 –
這些東西是自下而上的 - 你有沒有注意到你的系統的性能正在遭受線程爭奪?特別是在沒有提供數據的情況下猜測是沒用的 - 你有一個線程嗎?一百個線程? –