Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在我的情况下,我应该使用线程池而不是线程池吗?_Java_Pool - Fatal编程技术网

Java 在我的情况下,我应该使用线程池而不是线程池吗?

Java 在我的情况下,我应该使用线程池而不是线程池吗?,java,pool,Java,Pool,我有一个简单的塔防游戏。每个怪物都在自己的线程中移动,所以当新浪潮到来时,大约有20个新线程完成(随机从10个到25个)。我记得类似executor类的东西,它在有许多短命线程的情况下很有用。像我一样。因此,我的问题是: 我应该使用线程池吗?它会增加多少性能 我应该如何实施它?游泳池应该是一个场地吗 我会为每个怪物提供一个move()方法,并定期调用它。这样,您只有一个线程,它的性能应该很好。顺便说一句,如果您愿意,一个线程可以使用ExecutorService。我会为每个怪物提供一个move(

我有一个简单的塔防游戏。每个怪物都在自己的线程中移动,所以当新浪潮到来时,大约有20个新线程完成(随机从10个到25个)。我记得类似executor类的东西,它在有许多短命线程的情况下很有用。像我一样。因此,我的问题是:

  • 我应该使用线程池吗?它会增加多少性能
  • 我应该如何实施它?游泳池应该是一个场地吗

  • 我会为每个怪物提供一个move()方法,并定期调用它。这样,您只有一个线程,它的性能应该很好。顺便说一句,如果您愿意,一个线程可以使用ExecutorService。

    我会为每个怪物提供一个move()方法,并定期调用它。这样,您只有一个线程,它的性能应该很好。顺便说一句,如果您愿意,一个线程可以使用ExecutorService。

    我认为可以安全地假设波之间的间隔超过1秒,不是吗?否则,您的游戏将很难被击败

    如果生成的线程太少(15-25个线程不是什么大问题),我不认为使用线程池会有什么不同。就个人而言,我只会使用
    新线程
    。您可以随时切换到更晚的版本,但我认为在您的场景中不需要它

    例如,在编写一个web服务器时,线程池是合理的,该服务器必须处理数百个传入请求(假设每个请求都应该在单独的线程中处理)。然后线程池可能会提高性能,但它最重要的优点是它是一种限制资源使用的简便方法

    为什么??如果您只是在每个请求上生成一个新线程,那么如果同时有多个请求,您可能很快就会耗尽资源。使用具有线程上限的线程池可以防止这种情况发生


    (但是,不知道应用程序的细节,从纯粹的设计角度来看,完全避免线程,并将所有的游戏逻辑保持在一个线程中是绝对应该考虑的事情。它会使事情变得简单很多。但是,我还没有详细说明。)

    我认为假设波与波之间的间隔超过1秒是安全的,不是吗?否则,您的游戏将很难被击败

    如果生成的线程太少(15-25个线程不是什么大问题),我不认为使用线程池会有什么不同。就个人而言,我只会使用
    新线程
    。您可以随时切换到更晚的版本,但我认为在您的场景中不需要它

    例如,在编写一个web服务器时,线程池是合理的,该服务器必须处理数百个传入请求(假设每个请求都应该在单独的线程中处理)。然后线程池可能会提高性能,但它最重要的优点是它是一种限制资源使用的简便方法

    为什么??如果您只是在每个请求上生成一个新线程,那么如果同时有多个请求,您可能很快就会耗尽资源。使用具有线程上限的线程池可以防止这种情况发生


    (但是,不知道应用程序的细节,从纯粹的设计角度来看,完全避免线程,并将所有的游戏逻辑保持在一个线程中是绝对应该考虑的事情。它会使事情变得简单很多。但是,我还没有详细说明。)< /p>为什么每个怪物都会在自己的线程中移动,为什么不在一个运行循环的一个函数中移动它们呢?您可以使用并替换每个

    新线程(runnable).start()带有
    executorService.submit(可运行)@Jesus Ramos在这种情况下很难解释,也不需要解释。很快-原因是每一个移动速度都不同。然后在
    move()
    函数中跟踪速度。线程将给你宽松的时间。相信我,当我说做你正在做的事情是一个糟糕的想法时,它会在不同的系统上运行,并且不会给你一致的结果。@MichałTabor根本不需要它,你可以保留单独的移动功能,在移动或以不同的速率移动之前可以延迟一定的时间。我建议你改变解决问题的方法,而不是把自己挖到一个你无法挖出来的洞里。为什么每个怪物都会在自己的线程中移动,为什么不在一个运行循环中的一个函数中移动它们呢?你可以使用并替换每个
    新线程(runnable).start()带有
    executorService.submit(可运行)@Jesus Ramos在这种情况下很难解释,也不需要解释。很快-原因是每一个移动速度都不同。然后在
    move()
    函数中跟踪速度。线程将给你宽松的时间。相信我,当我说做你正在做的事情是一个糟糕的想法时,它会在不同的系统上运行,并且不会给你一致的结果。@MichałTabor根本不需要它,你可以保留单独的移动功能,在移动或以不同的速率移动之前可以延迟一定的时间。我建议你改变解决问题的方法,而不是把自己挖进一个你无法挖出来的洞里。