gpt4 book ai didi

java - 可调整大小的 ListeningExecutorService

转载 作者:行者123 更新时间:2023-11-30 04:49:14 27 4
gpt4 key购买 nike

我已经养成了包裹ExecutorService的习惯位于 listeningDecorator制作 ListeningExecutorService 。我知道这是 Guava 团队的建议,而且似乎总是值得的。

但是,我在这里遇到了一个问题。我的执行者基于标准 ThreadPoolExecutor 不变,并且我想将该线程池大小的控制权交给我的应用程序(特别是,将其公开给支持该应用程序的管理员)。带有未装饰的ThreadPoolExecutor ,执行此操作所需的方法已公开,但包装器向我隐藏了委托(delegate)。

那么,我需要做什么才能返回 ThreadPoolExecutor 公开的 api不放弃listeningDecorator

我的一些想法是:

  1. 新建 ListeningDecorator公开委托(delegate)
  2. 保留对委托(delegate)以及修饰的 Executor 的引用
  3. 仅保留对 ThreadPoolExecutor 的引用,并且仅当 ExecutorService 时才将其包裹起来按照要求
  4. 反射(reflect)我进入委托(delegate)的方式并从那里操纵线程池大小

最佳答案

这里是 Guava 团队成员。

我会编写一个新的 ListeningThreadPoolExecutor 类,它基本上是包装 ThreadPoolExecutorListeningDecorator 变体,但我不会公开委托(delegate)本身,而是' d 从转发到委托(delegate) ThreadPoolExecutorListeningThreadPoolExecutor 公开 setCorePoolSize(int size) 方法。

这种方法暴露的内部细节比选项 1 还要少,但如果做不到这一点,我会退回到您所描述的选项 1。

关于java - 可调整大小的 ListeningExecutorService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10233689/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com