假设我正在编写一些执行客户端代码 (Java) 的环境。客户端发送带有 list 信息的 jar。 Environment 从 jar 创建一些类实例(假设是 Runnable 的实例)并在某个线程中运行它。但我需要保证客户端代码不会启动自己的线程或创建自己的 ExecutorService 等等。
安全经理是否有可能进行这种级别的限制?如果可以,我该如何实现?
最佳答案
我能想到的最好方法是使用 AspectJ 进行一些运行时编织,如果创建了任何其他线程/可运行对象,则要么抛出错误,要么以某种方式通知用户他们遇到了问题。
然后您可以实现各种安全协议(protocol),例如,您不仅可以阻止线程,还可以阻止任何系统调用,例如,就像您可以禁止动态查询而只允许准备好的语句一样。
否则,您可能需要使用反射器 API 执行此类实现。
关于java - 线程安全策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1892238/