我目前正在开发一款MMORPG游戏并拥有一个FixedThreadPool,它包含4-8(取决于硬件)可运行的对象,可以处理游戏中的动作。
这是Runnable的run方法。
@Override
public void run() {
while(serverRunning){
synchronized (movementQueue) {
movementQueue.stream()
.parallel()
.filter((player) -> player != null && player.hasMovement())
.forEach((player) -> player.move());
}
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
只要服务器正在运行,这些runnable就会运行。现在有很多地方我读到ThreadPools只应该在任务不超过几秒时使用,但是没有任何地方可以解释它背后的原因。
如果是这样的原因是什么?我是java的新手,并试图学习更好的方法来解决问题因此,如果还有其他更好的方法,请告诉我。