如何让并发问题更频繁地发生?

时间:2012-07-18 19:25:25

标签: concurrency

这是一个普遍的问题。假设服务器有并发问题。客户端可以同时发送多个请求以触发问题。那么如何更频繁地解决问题?

1)客户需要足够快以同时发送更多请求

2)服务器需要足够快

他们会帮助重建这个问题吗?或者是否是相反的方式?服务器需要慢吗?

编辑1: 我认为这是竞争条件并发问题。多个线程使用相同的对象,但该对象不是线程安全的。

我主要担心的是假设我们有一个客户端每秒发送一些请求,是否更容易用更快的服务器或更慢的服务器重新创建问题?

2 个答案:

答案 0 :(得分:0)

如果您希望更多地解决问题,请同时获取更多活动客户端,或者让客户端使用自动循环来提交导致问题的API命令。

我认为你想让这个问题发生,这样你才能确定它为什么会发生?

答案 1 :(得分:0)

如果您正在谈论锁争用并发问题,那么我会说快速(或多个)客户端和慢速服务器。花在锁上的时间越多越好。

如果您在谈论竞争条件时需要高水平的随机性 - 不同的服务器性能水平。服务器上的大量连接也有助于此,但您需要尝试各种不同的服务器负载。从一些客户端开始,以确保并发性,然后增加吞吐量,直到您充斥服务器。

我怀疑重建你的问题会受到重创。注意添加System.out或记录消息,因为这会改变同步模式。

修改

如果您正在讨论对非线程安全的对象的读/写竞争条件,那么我会说您希望获得尽可能多的不同性能级别。竞争条件都是关于线程时间片完成并且线程被换出,缓存内存刷新时间,其他线程在写入器线程运行的同时运行以及操作顺序。

同样,我会编写你的客户端,以便它们启动缓慢然后构建,这样服务器就会受到不同程度的负载。