0
我有一個類存儲幾個字符串和整數。這些值正在我的程序中不斷更新。多線程 - 對類成員變量的獨佔訪問?
在同一個程序中,我也有一個簡單的套接字服務器,它處理包含在我的類的對象中的數據的傳入請求。由於服務器代碼包含一個while(true)
循環,我假設我需要將代碼放在單獨的線程中。否則一旦我進入這個循環,沒有別的東西會被執行?然後,我會將對我的類的引用傳遞給服務器線程,以便可以獲取值。
static ServerSocket socket1;
static Socket connection;
while (true) {
connection = socket1.accept();
...
}
無論如何,我想知道如果我要創建一個單獨的服務器線程,那麼我可能會遇到同步問題。當我的課程中遇到某些條件時,課程成員會更新。如果服務器當前正在更新,我不希望服務器能夠讀取這些值。我怎麼能這樣做呢?
有什麼問題嗎?如果你有多個線程訪問同一個變量,那麼,是的,你需要鎖定以防止比賽。 –
我的問題是我如何去做這件事 –
多線程同步是一個巨大的話題。我建議閱讀完整的Java併發實踐,http://jcip.net/ – Luis