Java最大线程数?

时间:2013-07-06 20:17:20

标签: java multithreading networking

所以我正在为我正在制作的游戏制作一个Java服务器,我想知道为每个玩家创建一个线程是否有点过分,考虑到服务器可能会同时在线吸引大量用户

多少线程是多少?,我应该为每场比赛制作1个线程(它是大厅类型的游戏,你选择一个匹配并输入)或每个玩家1个线程好吗?

3 个答案:

答案 0 :(得分:2)

这个soley取决于您的应用程序架构。在得出结论之前,我们需要了解一些事情。

  1. 如果你创建每个请求的线程无限nof,那么你的应用程序将遭受资源过度使用,你可能会出现内存错误或CPU过度使用
  2. 如果您创建的线程数量非常少,那么您的应用程序将会充满活力
  3. 如果我们动态创建一个线程,它还需要大量的资源
  4. 因此,最好让ThreadPool和线程池中有固定的nof个线程。比如Executors.newFixedThreadPool(NO_OF_THREADS);

    与此同时,我们的武器库中应该有一个拒绝政策,其中一些是例如Silent discard, discard with an exception, caller runner (back push so that it will slowdown request inflow the way normal networks work) and discard old (depends on your priority set)

    上述两件事都会为您提供强大的系统。对不起,如果您觉得我无法正确回答您的问题。

    编辑:我正在按照以下查询回答。

    1. 您可以通过jmeter测试您的应用程序,并查看您的应用程序的执行情况。您还可以通过梳理一些工作站,使用JMeter进行一些分布式负载测试。它将为您提供真实的图片,以及您应该为典型工作负载提供的线程。
    2. 有时像no of threads = 2 * no_of_cores * no_of_disks * percentage CPU utilization you need * (1 + (W/ C))
    3. 这样的公式

      (W / C)是表示计算时间的等待时间的分数。

答案 1 :(得分:0)

我为每个玩家在我的游戏中制作了线程,并且在同一时间内有20到30个线程并且没有lagg。所以对于我认为的每个球员。

答案 2 :(得分:0)

如果您询问在关闭系统之前可以创建多少个线程, 它可能是几千个线程,它取决于您的操作系统以及每个线程需要多少内存。

我们无法为您做出这样的设计选择,因为我们不知道每个线程的作用,但是如果每个游戏使用一个线程计数,并且优化是否符合您的目的(系统所需的可扩展性?商业或作业?),我会尽可能减少线程。