ThreadPool中长时间运行的任务

时间:2015-06-28 20:50:01

标签: java multithreading threadpoolexecutor

我目前正在开发一款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的新手,并试图学习更好的方法来解决问题因此,如果还有其他更好的方法,请告诉我。

0 个答案:

没有答案