gpt4 book ai didi

java - 将所有接口(interface)实例注册到某个全局容器

转载 作者:搜寻专家 更新时间:2023-11-01 02:31:14 26 4
gpt4 key购买 nike

我需要关闭许多不同实现的线程,它们只有一些共同的 Shutdown 接口(interface)。我不想在整个代码中传递一些全局集合并手动添加新创建的线程,因为它肯定会被遗忘在某个地方,因此很容易出错。

是否有一些巧妙的方法,也许是通过反射技巧,来获取某个接口(interface)的所有实例?或者是否有其他方法可以强制新创建的线程在集合中注册?我只能考虑使用某种 super 构造函数,然后传递 this 引用,但这是非常糟糕的风格。

这种任务就像日志记录,一些不应与其余业务逻辑处于同一级别的元数据。

是否有标准的关闭注册模式或一些最佳实践?

附言所有代码片段都可以编辑。

最佳答案

蛮力方法是 list all running threads并简单地使用:

if(thread instanceof Shutdown) {
((Shutdown)thread).shutdown();
}

当然还有更优雅的方法:

  • 使用DI注入(inject)全局线程容器

  • 考虑使用 ThreadFactory带有一些自定义逻辑。

关于java - 将所有接口(interface)实例注册到某个全局容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8763951/

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