Java ExecutorService睡眠线程池中的所有线程

Java ExecutorService睡眠线程池中的所有线程,java,multithreading,executorservice,Java,Multithreading,Executorservice,我在使用ExecutorService时遇到问题,理想情况下,我正在寻找一种解决方案,将所有线程都休眠在线程池中(玩Adwords API时,在推送某些广告时,我会捕获速率超过的错误,然后休眠该线程,但其他线程没有意识到该错误,仍然以速率超过的响应敲击API,这增加了处理另一个请求之前的等待时间) 有没有什么简单的方法可以让所有线程同时休眠?我试图找到任何解决方案,我有一个想法,但我确信有类似的东西存在 感谢您的帮助,祝您度过愉快的一天。一个线程无法“睡眠”另一个线程,即使可能,这也不是一个好主

我在使用
ExecutorService
时遇到问题,理想情况下,我正在寻找一种解决方案,将所有线程都休眠在线程池中(玩Adwords API时,在推送某些广告时,我会捕获速率超过的错误,然后休眠该线程,但其他线程没有意识到该错误,仍然以速率超过的响应敲击API,这增加了处理另一个请求之前的等待时间)

有没有什么简单的方法可以让所有线程同时休眠?我试图找到任何解决方案,我有一个想法,但我确信有类似的东西存在


感谢您的帮助,祝您度过愉快的一天。

一个线程无法“睡眠”另一个线程,即使可能,这也不是一个好主意。线程应该合作

如果您使用的是ExecutorService,这意味着存在一个任务队列。最简单的解决方案是限制将任务放入队列的速率


另一种解决方案是创建一个全球“节流阀”所有任务都知道的对象。它将有一个方法,每个任务都可以调用该方法,直到可以继续。您需要考虑该对象是如何同步的:如果您试图达到的最大速率很高,一个简单的全局锁可能是一个重要的瓶颈。

可能是我不认为的重复这里有一个选项,但您可以使用PausableThreadPoolExecutor,如第页所述。