-1

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

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

设想:

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

线程只是简单地建立一个 http url 连接到一个 url http://www.example.com/some/page

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

我不想为此使用执行器来学习如何在没有它的情况下执行它,并且我相信由于执行器框架将任务和线程分开,它不能保证有多少线程同时运行。

4

3 回答 3

2

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

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

于 2011-12-29T20:51:57.797 回答
1

run()在您的方法中使用循环。

于 2011-12-29T20:48:00.790 回答
1

据我所知,关闭,您希望拥有大量服务器线程,并让它们从列表中执行一项工作,然后返回并等待指定另一项工作(或处理另一项已经 -列表中的当前作品)。

这就是您使用队列的目的。可能 BlockingQueue 是适合您的目的的最简单的使用形式,并且在 JDK 中有几种实现。

于 2011-12-29T20:48:56.377 回答