2012-12-15 121 views
2

有誰知道用PostConstruct註釋的方法中實例字段的初始化是否被認爲是線程安全的?我不太確定,如果我必須使我的ApplicationScoped bean的字段變得不穩定或不是,所以其他線程可以真正看到這些值...CDI postconstruct初始化字段

感謝您的任何提示或答案!

回答

1

我沒有直接引用規範,絕對保證這一點,但@PostConstruct應該是線程安全的。

CDI運行時完全負責創建bean,並且只會爲給定範圍創建一個實例。 @PostConstruct在這個範圍內或通過注入訪問bean之前運行。

+0

謝謝你,如果你能肯定地告訴我,會更好,因爲從JMM的角度來看,我認爲如果沒有記憶障礙,我必須讓它們變得不穩定。 –

+0

你會想,但是在CDI初始化bean之前,其他線程可能甚至不會獲得對實例的引用。在併發請求一個bean的情況下,我敢肯定所有的線程都停留在假設的'beanManager.getBean(...)'調用上。 –

+0

謝謝,這當然是唯一有意義的行爲,但我很想知道它,而不必閱讀規範。 ;) –