2016-06-30 31 views
0

我打算開發一個java應用程序,它作爲一個WebSocket服務器。基本思想是通過讓ArrayList存儲所需的所有數據並每分鐘更新一次數據來減少sql查詢數量。我的想法是創建一個內部存儲數據的類,另一個擴展Thread類,並更新數據存儲類中的數據。我的問題是這是否是一個好方法,還有其他選擇。我擔心,關於情況,當WebSocket線程「暫停」,並且用戶在那一刻發送請求。理論上會發生什麼?Java線程改變數據和線程服務數據給用戶使用websocket

+0

嗯,你只是爲了學習或爲了一個真正的計劃?對於一個真正的項目,我建議你首先學會使用像Hibernate或EclipseLink這樣的ORM,**很好地使用**(最糟糕的是它可能最糟糕......),它們會顯着減少拋出到服務器的查詢數量。 Aniway,SO是關於調試一個現有的代碼,你的問題要麼太寬泛,要麼主要是基於觀點,並且是如此不重要的話題。最後,如果你想使用類似websocket的東西,爲什麼不使用真正的websocket和java websocketclient?除非是爲了學習,否則沒有必要重做車輪。 – Walfrat

+0

要回答它,應該有必要知道您的應用程序可以存儲在此ArrayList中的數據量,以及預期的吞吐量。 –

+0

arrayLists中會有arrayLists,最多可存儲100個對象,大約有10個字段,輸入類型將是JSON,給我用戶ID和令牌,以及數據請求 – Berrigan

回答

1

使用數據庫

如果你的問題是不是學術(好奇心)實際相反,那麼答案很簡單:使用一個數據庫。

對數據庫的主要建議之一是有效和安全地處理多線程更改數據和同時查詢。爲什麼要重新發明輪子,特別是非常難棘手的輪子?

類似於H2 Database Engine似乎很適合您的需求。這種產品甚至可以嵌入您的應用中。

如果您不關心將數據保存到存儲空間,則可以使其運行速度爲「in memory」 database以獲得更高的速度。