2011-10-16 86 views
0

我想对多个单例进行急切的初始化,但初始化可能需要几分钟的时间,所以我希望初始化发生在单独的线程上。有没有办法做到这一点?如何在单独的线程中进行单例的初始化初始化?

+0

你可以使用这些单身代理吗?你是否想要在接线阶段中并行化这些昂贵的单例的初始化? – mhaller

+0

如果您有多个需要几分钟才能初始化的单身人士,听起来像您有设计问题。您应该始终能够编写应用程序,因此不需要几分钟即可开始。也许你可以解释为什么需要这么长时间,也许有更好的方法。 –

回答

0

当然,只需启动一个辅助线程并让它执行它。最简单的方法是使用SingletonHolder并执行任何会导致辅助线程初始化的操作。如果在初始化完成之前尝试访问它,其他线程将会被阻止,所以一切正常。

+0

这很懒,不急于初始化。 –

+0

你真的看过我的回答吗? SingletonHolder意味着延迟初始化,立即在新线程中访问它,使其尽快发生。这是关于所有可以实现的,不是吗? ---我现在看到你用guice标记你的问题,这改变了事情。 – maaartinus

+0

对不起,我应该让问题中的Guice部分更明显。 –