2011-10-16 91 views
0

我想對多個單例進行急切的初始化,但初始化可能需要幾分鐘的時間,所以我希望初始化發生在單獨的線程上。有沒有辦法做到這一點?如何在單獨的線程中進行單例的初始化初始化?

+0

你可以使用這些單身代理嗎?你是否想要在接線階段中並行化這些昂貴的單例的初始化? – mhaller

+0

如果您有多個需要幾分鐘才能初始化的單身人士,聽起來像您有設計問題。您應該始終能夠編寫應用程序,因此不需要幾分鐘即可開始。也許你可以解釋爲什麼需要這麼長時間,也許有更好的方法。 –

回答

0

當然,只需啓動一個輔助線程並讓它執行它。最簡單的方法是使用SingletonHolder並執行任何會導致輔助線程初始化的操作。如果在初始化完成之前嘗試訪問它,其他線程將會被阻止,所以一切正常。

+0

這很懶,不急於初始化。 –

+0

你真的看過我的回答嗎? SingletonHolder意味着延遲初始化,立即在新線程中訪問它,使其儘快發生。這是關於所有可以實現的,不是嗎? ---我現在看到你用guice標記你的問題,這改變了事情。 – maaartinus

+0

對不起,我應該讓問題中的Guice部分更明顯。 –