2

我开发了一个应用程序,并且在给定的时刻,我启动了大约 10000 个线程来对数据库进行压力测试。我想通过以下方式同步它:我想从所有线程中的表中读取所有数据,然后我希望所有线程等待其他线程停止读取。在所有线程完成读取后,我从该表中删除所有记录,然后我希望所有线程插入之前读取的数据。现在,我如何同步我的线程,以前面提到的顺序相互等待?什么是最好的解决方案?

4

2 回答 2

8

使用CyclicBarrier

CyclicBarriers 在涉及固定大小的线程组的程序中很有用,这些线程组必须偶尔相互等待。

上面引用的 JavaDoc 中的示例解决了完全相同的问题。


一万个线程?确保您正在测试您的数据库,而不是您的 CPU 和内存(上下文切换开销可能很大)。您是否考虑过分布式模式下的

于 2012-07-24T08:41:27.077 回答
3

这可能不是您想要的,但您可以看看CountDownLatch

一种同步辅助,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。

于 2012-07-24T09:08:05.060 回答