Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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_Multithreading - Fatal编程技术网

java多线程

java多线程,java,multithreading,Java,Multithreading,我正在开发一个程序,该程序需要基于一些内部到达生成线程 我有一个生成 新线程每“间隔”一次,这些线程被设置为setDaemon(true) 每一根线都会在一段时间后自行停止 “持续时间”时间。(本地计算) 在线程中) 我已经使用ExecutorService threadExecutor=Executors.newFixedThreadPool(250)实现了ExecutorService;保存250个线程的引用,并能够在需要时停止所有线程 这在理论上是因为在测试之后,只产生了47个线程 因

我正在开发一个程序,该程序需要基于一些内部到达生成线程

  • 我有一个生成 新线程每“间隔”一次,这些线程被设置为setDaemon(true)
  • 每一根线都会在一段时间后自行停止 “持续时间”时间。(本地计算) 在线程中)
  • 我已经使用ExecutorService threadExecutor=Executors.newFixedThreadPool(250)实现了ExecutorService;保存250个线程的引用,并能够在需要时停止所有线程
  • 这在理论上是因为在测试之后,只产生了47个线程
因此,我的问题是:

  • 这个数字有限制吗 执行服务?我应该换成chached吗
  • 这是JVM的限制吗
  • 我怎样才能通过这个限制并产生新的线程来保持“interarrival”
  • 有没有实现这一目标的最佳方法
  • 还有没有办法在JVM崩溃之前检测我可以生成的线程数量

你怎么知道只有47只产卵?如果正在生成线程,为什么要使用执行器

  • 这项服务有限制吗?我应该换成chached吗
限制由内存量和操作系统决定。没有固定的限制

  • 这是JVM的限制吗
没有

  • 我怎样才能通过这个限制并产生新的线程来保持“interarrival”
我不明白那个问题

  • 有没有实现这一目标的最佳方法
我不明白你想做什么,所以很遗憾我不能回答这个问题

  • 还有没有办法在JVM崩溃之前检测我可以生成的线程数量

否,因为可以创建的线程数可能会受到VM参数的影响。它还将取决于操作系统、内存等。

我没有仔细阅读您的代码,但我认为您之前生成的线程可能已经运行完毕并终止,因为每个调用的长度相同,并且生成新调用的速率是恒定的(取决于您的配置文件。getCallInterarrival();)。当您的程序第一次启动时,它将不断生成新线程,直到1分钟后(60000),调用开始终止,系统将达到一个平衡,即每次创建新调用,都会有一个调用终止


如果我的理论是正确的,您的profile.getCallInterarrival()将返回类似于1.33的值。

您不显示代码,然后问几个问题。发布一些代码,而不是演示您遇到的问题,我相信有人可以提供帮助。更好的是,您可以发布一些问题的上下文。并发包非常擅长管理线程。我担心你可能正在重新实现一些已经为你做过的事情。你没有给我们提供足够的信息,但我可以告诉你47不是JVM的限制……这个程序生成线程,这些线程在根据指数分布计算的时间内进行调用,指数分布是我的内部变量。所以每个调用都有一个目标,在目标上我只能看到47个线程,当一个调用结束时,传入调用的数量会增加。e、 47个活动呼叫,如果一个呼叫结束,总呼叫数将增加到48个。“如果您正在生成线程,为什么要使用执行器?”由于生成的线程数量很大,我想要一些东西来保存所有这些线程,还因为我想要引用所有活动线程并能够关闭它们。关于MaxSap,你是对的getCallInterarril将返回0.33434,这就是为什么我会将其乘以。我没有测试你的理论思想