我想對多個單例進行急切的初始化,但初始化可能需要幾分鐘的時間,所以我希望初始化發生在單獨的線程上。有沒有辦法做到這一點?如何在單獨的線程中進行單例的初始化初始化?
回答
當然,只需啓動一個輔助線程並讓它執行它。最簡單的方法是使用SingletonHolder並執行任何會導致輔助線程初始化的操作。如果在初始化完成之前嘗試訪問它,其他線程將會被阻止,所以一切正常。
這很懶,不急於初始化。 –
你真的看過我的回答嗎? SingletonHolder意味着延遲初始化,立即在新線程中訪問它,使其儘快發生。這是關於所有可以實現的,不是嗎? ---我現在看到你用guice標記你的問題,這改變了事情。 – maaartinus
對不起,我應該讓問題中的Guice部分更明顯。 –
- 1. 如何初始化一個單獨的線程中的類
- 2. 初始化ruby單例
- 3. boost.threads單例初始化
- 4. 初始化實例的單例
- 5. 單例類中的初始化列表
- 6. 如何初始化傳單路由線
- 7. 在Android中進行單例初始化的正確方法?
- 8. 單獨的PHP類初始化文件
- 9. 從單獨的.php表初始化dataTable
- 10. 如何初始化Kotlin中的線程?
- 11. 如何在單獨的行上使用「new」初始化數組?
- 12. java中的初始化初始化
- 13. 簡單的DataTables示例初始化
- 14. 如何初始化和單行
- 15. 結構數組的單線初始化
- 16. CLKComplicationServer初始化已初始化的單例類CLKComplicationDataSource,雖然的init()是私有
- 17. ruby - 類的實例化和初始化(初始化不叫?)
- 18. 初始化主線程
- 19. 線程化類成員函數;線程初始化通過初始化列表
- 20. Objective C - 單例類instan未初始化
- 21. Objective-C類初始化或單例
- 22. 初始化在初始化列表
- 23. 進程未初始化
- 24. 在指定的初始化程序中初始化實例對象?
- 25. 初始化表單控件
- 26. StructureMap初始化web表單
- 27. 初始化單鏈表Java
- 28. 初始化單後裔
- 29. C++單初始化順序
- 30. 訂單字段初始化
你可以使用這些單身代理嗎?你是否想要在接線階段中並行化這些昂貴的單例的初始化? – mhaller
如果您有多個需要幾分鐘才能初始化的單身人士,聽起來像您有設計問題。您應該始終能夠編寫應用程序,因此不需要幾分鐘即可開始。也許你可以解釋爲什麼需要這麼長時間,也許有更好的方法。 –