阻止Java / Retrofit中的并发请求到同一主机

时间:2018-12-28 07:28:35

标签: java concurrency ninja

我有一个Java / Ninja框架Web应用程序,通过Retrofit API将请求发送到第三方API。

我有一个线程T1,该线程是使用Ninja框架计划注释(http://www.ninjaframework.org/apidocs/ninja/scheduler/Schedule.html)从线程池生成的。 T1连续轮询到host1(example.com)。

当另一个线程说T2向同一主机(example.com)启动请求时,我希望T2等待直到T1完成其操作,反之亦然。

我签出了http://square.github.io/okhttp/3.x/okhttp/okhttp3/Dispatcher.html,但好像maxRequestsPerHost可能无法同时工作。

我尝试使用hashMap修改每个线程的hostStatus并将状态包括在同步块中,但是将其添加到多个方法中似乎很麻烦。

我不确定哪种并发模式或锁定机制适合这种情况。有没有一种方法可以将hostIds添加到队列或其他模式以实现此行为。

0 个答案:

没有答案