在java中同步大量线程的最佳方法

时间:2012-07-24 08:37:33

标签: java multithreading stress-testing

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

2 个答案:

答案 0 :(得分:8)

使用CyclicBarrier

  

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

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


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

答案 1 :(得分:3)

这可能不完全符合您的要求,但您可以查看CountDownLatch

  

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