【问题标题】:ExecutorService sleep all threads in thread poolExecutorService 休眠线程池中的所有线程
【发布时间】:2014-08-26 12:04:14
【问题描述】:

我在使用ExecutorService 时遇到问题,理想情况下,我正在寻找一种解决方案,让线程池中的所有线程都处于休眠状态(使用 Adwords API,在推送一些广告时,我得到了我捕获的速率超出错误,然后使该线程休眠,但其他线程不知道该错误并且仍然以超出速率的响应来访问 API,这增加了等待时间,直到可以处理另一个请求)。

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

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

【问题讨论】:

标签: java multithreading executorservice


【解决方案1】:

没有办法让一个线程“休眠”另一个线程,即使有可能,这也不是一个好主意。线程应该合作

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

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

【讨论】:

    猜你喜欢
    • 2019-08-12
    • 1970-01-01
    • 2011-09-12
    • 2014-08-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多