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

时间:2011-12-29 20:40:29

标签: java multithreading countdownlatch

如果我创建1K线程并使用锁存器同时启动它们,一旦线程完成我的进程结束。

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

情景:

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

线程只是建立与网址http://www.example.com/some/page

的http网址连接

我想要做的是连续运行x秒,并且总是运行1K线程。

我不想使用执行程序来学习如何使用它而且我相信,因为执行程序框架将任务和线程分开,所以它不会保证有多少线程在运行同一时间。

3 个答案:

答案 0 :(得分:2)

您必须在Runnable本身中执行此操作。围绕您的操作创建一个简单的循环。 如果您希望它们在某个点同步,请创建一个计数为1000的CountdownLatch,并在每次迭代结束时执行countDown和await。

Apache JMeter是一款免费的性能测试工具,您可以轻松配置该工具以在多个线程中测试网址。它还可以分发测试以具有例如10个客户代替100个线程。

答案 1 :(得分:1)

run()方法中使用循环。

答案 2 :(得分:1)

我可以告诉你,你想拥有大量的服务器线程,让它们从列表中执行一项工作,然后再回来等待指定另一项工作(或者继续工作)列表中另一个已存在的部分。)

这是您使用队列的原因。 BlockingQueue可能是最适合您的目的使用的形式,JDK中有几种实现方式。