我正在製作基於回合制的多人遊戲,在回合中工作。基本上一名球員主持一場比賽,另一名球員加入比賽,然後比賽結束。我的服務器需要處理這些匹配,並每隔5秒給客戶端提供更新。我通常會用timer/thread.sleep()來做到這一點。我的問題是我不確定如何爲多個匹配同時做到這一點。我覺得每場比賽使用一個線程將是荒謬的,因爲它會比任何事情都坐得更閒。Java NIO服務器回合制遊戲
我的一個想法是隻有一個線程以5秒爲間隔更新每個匹配。我感覺到的唯一問題是,當很多比賽一旦進行時,最後更新的比賽可能會在比賽中產生一些延遲。 (我不知道這會是多麼的重要,因爲我的比賽是基於時間的,但看起來很原始)。
我的另一種選擇是使用ScheduledExecutorService(線程池),這似乎很有前途。
我會遇到問題與我的ScheduledExecutorService線程池,因爲我也爲套接字連接運行線程池?
2.是否有更好的方法來實現我想要實現的目標?
只是爲了澄清我正在尋找一種方法來基本上每場比賽每5秒調用一個函數。例如:
我的遊戲從0開始,您的遊戲在2秒開始。該服務器將調用更新功能:
對於我來說:0,5,10,15,20,25,等...
對於你:2,7,12,17,22,27,等等...
這些遊戲是用Java Swing編寫並在客戶端運行的嗎? – amphibient
這是網絡遊戲嗎?對於本地網絡還是以太網?你使用什麼協議通知(tcp,udp等?) – iMysak
1,沒有你沒有任何問題,除了資源管理問題,一旦你的服務器變得忙碌起來。 2,這取決於你可以看看udp多重化,也看看JMS主題。 – BevynQ