我正在爲多人遊戲寫一個Netty服務器,我不確定是否需要以某種方式同步一個生活在服務器中但由ChannelHandler訪問的變量。從Netty Handler中訪問Netty服務器的一個實例
在服務器級別,我使用ArrayList來存儲服務器將要服務的不同匹配項。
每場比賽將引用2個頻道(我爲每場比賽存儲ChannelHandlerContetx)。
當我創建從SimpleChannelInboundHandler擴展的ChannelHandler時,我將服務器實例傳遞給構造函數,並將該服務器作爲實例變量存儲在處理函數中。
當channelActive被觸發時,ChannerlHandler將以「等待」狀態在ArrayList(位於服務器實例中)中搜索匹配項。如果它找到一個它會綁定它並更改匹配狀態。如果沒有創建新的Match,然後通道綁定到它,使其處於等待狀態。
我知道渠道是線程安全的。但是這裏不同的頻道訪問同一個服務器的ArrayList實例。
在這種情況下,我應該照顧同步對ArrayList的訪問嗎?
請注意萬一它增加了我的問題:因爲我將在後端有一個數據庫,我正在創建處理程序時傳遞一個DefaultEventExecutor在.addLast()方法。