我想在每次登陸一個賬號就將他的執行緒添加到hashmap里面,hashmap是一個靜態變數,寫了add函式為其添加內容。
但是就有個問題,每次重新運行login,登陸成功時,hashmap里面只會保存一個,因為每次重新運行,他便會呼叫最開始的那個hashmap,而不是我希望的那個已經添加了內容的hashmap
請問怎樣才能做到呢?
點擊登陸,登陸

服務器會發回來一個成功字串,于是我創建一個socket和執行緒,用來不停的讀取服務器發來的訊息,然后添加到hashmap里面

hashmap

uj5u.com熱心網友回復:
static變數不能保證執行緒安全性,試試加上volatile,最好是加鎖。
uj5u.com熱心網友回復:
問題是我現在無法做到將所有執行緒保存到一個hashmap里面
uj5u.com熱心網友回復:
每個行程的記憶體是不一樣的,static并不能在不同的行程間共享也就是第一個行程的static和第二個行程的static沒關系,它們是獨立的,各自在自己的行程空間里
行程間共享資料,要們就通過檔案(每個行程訪問同一個共享的檔案獲取資訊),要們就通過第三方服務(每個行程都訪問同一個第三方服務獲取資訊)
uj5u.com熱心網友回復:
DEBUG模式除錯一下嗎?你增加應該是服務端ServerSocket 增加 ,客戶端Socket 增加給誰?轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/146487.html
標籤:Java EE
上一篇:ERROR! The server quit without updating PID file /var/run/mysqld/mysqld.pid
