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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/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 如何启动1K个线程,并在完成任务时在同一任务上连续运行线程_Java_Multithreading_Countdownlatch - Fatal编程技术网

Java 如何启动1K个线程,并在完成任务时在同一任务上连续运行线程

Java 如何启动1K个线程,并在完成任务时在同一任务上连续运行线程,java,multithreading,countdownlatch,Java,Multithreading,Countdownlatch,如果我创建1K个线程,并使用闩锁同时启动它们,那么一旦线程完成,我的进程就结束了 我想做的是,当线程结束时,启动另一个线程来处理同一个任务(或者以某种方式让同一个线程继续处理同一个任务) 情景: 我希望启动1K个线程,并且不希望在完成处理后启动另一个1K个线程的性能损失 这些线程只是与一个url建立一个http url连接 我想做的是连续运行x秒,并始终运行1K个线程 我不想使用执行器来实现这一点,因为我知道执行器框架将任务和线程分开,所以它不确定同时运行了多少线程。在run()方法中使用循环。

如果我创建1K个线程,并使用闩锁同时启动它们,那么一旦线程完成,我的进程就结束了

我想做的是,当线程结束时,启动另一个线程来处理同一个任务(或者以某种方式让同一个线程继续处理同一个任务)

情景:

我希望启动1K个线程,并且不希望在完成处理后启动另一个1K个线程的性能损失

这些线程只是与一个url建立一个http url连接

我想做的是连续运行x秒,并始终运行1K个线程


我不想使用执行器来实现这一点,因为我知道执行器框架将任务和线程分开,所以它不确定同时运行了多少线程。

run()
方法中使用循环。

如我所知,您希望有大量的服务器线程,并让它们执行列表中的一项工作,然后返回并等待指定另一项工作(或处理列表中已存在的另一项工作)


这就是您使用队列的目的。BlockingQueue可能是最简单的形式,可以满足您的目的,JDK中有几种实现方式。

您必须在Runnable本身中实现它。围绕动作创建一个简单的循环。 如果希望它们在某一点同步,请创建一个计数为1000的倒计时锁存器,并在每次迭代结束时进行倒计时并等待


是一个免费的性能测试工具,您可以轻松配置以在多个线程中测试URL。它还可以分发测试,例如让10个客户端执行100个线程。

创建1000个线程从来都不是一个好主意。@SLaks其用于基准测试,我想学习如何创建一个基准测试工具。创建这么多单独的线程可能不是你认为的那样,可能还有更好的方法来运行1000个并发请求。请注意,您正在旋转1000个线程,这些线程大部分时间都在等待…这有点像带着10张支票去银行存入您的帐户,然后带着10个朋友,每个人都存入一张支票。@AndrewBarber所以你说服务器不能同时运行1K个线程?不,我只想连续点击一个url x秒(我在问题中提到过)。然后你想要的似乎是一个
while(TRUE)
循环。