-1

我正在开发一个开源框架作为java中的微服务引擎。所以,我有一个 Service 类,其中包含许多可以从任何线程调用的方法。为了控制服务线程,我想保证与服务相关的所有线程都将在特定的情况下创建ThreadGroup

线程 A -> service.createNewThreadUnderCurrentThreadGroup() -> 抛出异常SecurityManager

线程 A -> service.createNewThreadUnderServiceThreadGroup() -> 成功

我不是关于SecurityManagers 和ThreadGroups 的专家。也许,我应该使用ClassLoaders 来配置它?还是使用自定义安全管理器?请问,有什么建议吗?我知道可以直接从服务实现中检查什么,但我想保证该实现不会破解机制并且不会在服务之外创建线程ThreadGroup

ThreadGroup另一个想法是每次调用服务方法时在服务下创建新线程,因此保证该方法将在服务下执行ThreadGroup,因此没有外部线程。但它会使代码复杂化很多,假设什么服务方法可以抛出一个 throwable。

谢谢

4

1 回答 1

1

SecurityManager自 java 17 ( 1 , 2 )以来已弃用,因此最好避免在新代码中使用它。

于 2021-10-17T18:44:39.653 回答