我今天去面試了,遇到乙個面試題,spring單例bean是執行緒安全的嗎?

時間 2021-06-09 22:52:00

1樓:VKgg

Spring中的預設單例bean是,並沒有對單例bean進行執行緒安全的封裝,單例bean可以分為是否有狀態,也就是說是否進行資料儲存,無狀態情況下,就是不進行資料儲存,此時在多執行緒下是安全的,當有狀態時,進行資料儲存,是非執行緒安全,此時可以更改bean的scope屬性值為prototype來保證執行緒安全

2樓:呢克芝麻糊

前兩天面試的時候被面試官兩連問:

spring的bean是單例的嗎?(回答:預設是單例的)如果是單例的怎麼保證執行緒安全的?

當時我就糾結了。因為我想到了action(我們用的struts框架)中是有共享物件的,,,那spring如果是單例的action肯定不是執行緒安全的呀。而且我又想到了前台傳過來乙個請求就是乙個action例項。。

然後我特麼就懷疑難道預設是多例的我以前就記錯了。

回家的地鐵上忽然靈機一動想出來了。我特麼沒有在spring中配置action呀。以前玩在spring中配置action的時候都是加個scope="protoType",也就是把action配成多例的。

多例中只能共享靜態變數,action中一般也不會給變數配成靜態的,所以也就不會出現執行緒安全了。

spring配置檔案裡的bean一般配的是service層或者dao層的例項,而這兩層的例項一般不會有共享變數,沒有共享變數就不會牽扯到執行緒安全。

3樓:cares w'ho

題主的意思是controller 引用service 成員變數,在併發環境中延遲載入會建立不止乙個例項嗎?

我的理解是spring在例項化bean的時候做了同步,不管是延遲載入還是初始化載入都只建立乙個bean例項,所以在注入這塊不會涉及到執行緒衝突,不知道我理解的對不對

4樓:我只喜歡林允兒

如果在你不定義成員變數的情況下,spring預設是執行緒安全的

而且這個問題跟懶載入似乎也沒什麼聯絡,懶載入的意義在於啟動的時候並不是將所有的bean載入到spring容器中,而是在有需要用到的時候再去載入

騰訊面試題,如何尋找乙個陣列裡面唯一不重複的元素 要求時間複雜度o(n)和空間複雜度o(1)

人生戰略規劃局 intfind int arr return tmp lvxiaoxin 異或。如果重複次數是偶數 連續進行異或運算,最後的結果就是。這樣一次遍歷,且不需要輔助空間。如果重複次數是奇數次,可以利用經典的partition,將其分開,分開的標準可以是比如,二進位制中某一位是1。然後同情...

今天去面試 ,去的是個會計事務所,面試的人說我說話像銷售,這是好還是不好 ?

無風魅影 好,非常好 業務思維乃是百搭思維之一 對業務進行擴大解釋就可以理解為 讓別人接受採納我的觀點或意見。做銷售你需要客戶接受採納 做管理你需要員工接受採納 對上級你需要領導接受採納 對於只想招高強度勞動力的會計師事務所事務所來說,銷售 的評價是偏拒絕的意思。會計師事務所的業務拓展,主要靠合夥人...

求助 今天面試了倆個銷售的工作 不知道去哪個求建議

瓶子與旭可樂 其次,請把面試的銷售工作屬於哪個行業說明白,銷售中分為務虛,傳統,金融,網際網路等行業的銷售 最後,建議你去大規模的公司,能接觸到不同層級的人,對於提公升銷售能力有幫助,畢竟,客戶資源多,練手的機會也就多了。大體講這些,簡單直接命中本質就好了。 活不明白還怕死 建議是一定還是先去基本工...