我在Java中使用自定義類Foo
作爲HashMap
中的鍵類型。 Foo
實例的所有字段都是不可變的(它們被聲明爲final和private,並且僅在構造函數中被賦值)。因此,給定Foo
對象的hashCode()
也是固定的,爲了優化目的,我正在構造函數中計算它,並簡單地在hashCode()
方法中返回該值。Java線程優化
Foo
的實例也有一個value()
方法,一旦實例化對象就返回一個類似的固定值。目前我也在構造函數中計算它,並在方法中返回它,但hashCode()
和value()
之間存在差異:hashCode()
在創建對象後幾乎立即被調用,但value()
稍後調用。據我所知,有一個單獨的線程來計算哈希碼只會增加,因爲同步問題的運行時間,但:
- 這是一個很好的方法來計算
value()
?它會改善運行時間嗎? - 很簡單
Threads
夠了,還是我需要使用泳池等?
注:這可能看起來像我優化我的程序錯誤的部分,但我已經制作的「正確」的部分,並從所帶來的平均運行時間縮短〜17秒到〜2秒。 編輯:將有5000個以上的對象,這是一個保守的估計。
,這將是奇怪的,因爲'值()'就能夠在一段時間內返回無效值。 – njzk2
@ njzk2這對我的程序來說很好;正如我所說的,'value()'在對象創建後被稱爲很長時間。 – shardulc