在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ springmvc中,定義一個static變量,那么所有用戶請求取到的該stat

springmvc中,定義一個static變量,那么所有用戶請求取到的該static變量是同一個嗎

用springmvc寫一個的javaweb項目,在這個項目中,我定義了一個static類型的map,用于存放一些記錄數(shù)據(jù)。我希望,所有訪問網(wǎng)站的用戶,取到的該staitc類型的map都是同一個實例。比如A用戶訪問該map,并在這個map中添加了一條記錄,那么當B用戶請求時,可以看到這個map中有A剛剛添加的數(shù)據(jù)
這樣操作能否實現(xiàn)『所有用戶共享一個static變量』的要求呢?
為了實現(xiàn)這個要求,使用static變量是否合適?還是我應(yīng)該用redis之類的把它存下來呢?

回答
編輯回答
有點壞

1.static 修飾的變量屬于類,保存有一份。當多線程訪問該代碼的時候,需要考慮并發(fā)操作。如果你把鎖都加好了,那么每個用戶都可以看到一份數(shù)據(jù),否則會有線程安全的問題存在。
這種情況建議使用concurrent下的map好一點
2.用redis也可以緩存這些東西。

2017年5月31日 22:28
編輯回答
懶豬

static修飾的變量單獨存在分區(qū)里,只有一份

2018年8月24日 16:30
編輯回答
夢囈

static 變量可以,剛剛的回答有點錯誤,和是否單例模式?jīng)]有關(guān)系。static 變量只存在一份。

2018年8月21日 22:51
編輯回答
檸檬藍

static變量是可以的,但是不建議直接使用map,建議使用線程安全的map

2017年11月19日 00:26
編輯回答
萌吟

不建議你這樣使用靜態(tài)變量,正像cauhn說的那樣,如果網(wǎng)站規(guī)模大了,你很可能需要同時運行多個JVM進程(甚至跨服務(wù)器)做負載均衡,這時候進程內(nèi)部的同步手段就不能用了,只能用跨進程的數(shù)據(jù)同步方式,比如數(shù)據(jù)庫或者redis之類的緩存系統(tǒng)。

2017年7月7日 05:22
編輯回答
大濕胸

業(yè)務(wù)大了之后,一個javaweb實例肯定是不夠的,建議使用redis。

2017年5月18日 08:01
編輯回答
淡墨

可以使用application對象

2017年10月18日 13:07