代码之家  ›  专栏  ›  技术社区  ›  Denis Bazhenov

线程安全策略

  •  2
  • Denis Bazhenov  · 技术社区  · 16 年前

    假设我正在编写一些执行客户端代码(Java)的环境。客户机发送带有清单信息的JAR。环境从JAR创建一些类实例(假设是runnable的实例),并在一些线程中运行它。但我需要保证客户机代码不会启动自己的线程或创建自己的ExecutorService等等。

    安全管理器是否有可能执行此级别的限制?如果是这样,我怎么能做到呢?

    2 回复  |  直到 16 年前
        1
  •  2
  •   James Black    16 年前

    我能想到的最好的方法是使用aspectj进行一些运行时编织,如果创建了任何其他线程/可运行文件,那么要么抛出一个错误,要么以某种方式通知用户他们有问题。

    然后,您可以实现各种安全协议,例如,您不仅可以防止线程,还可以防止任何系统调用,例如,正如您可能禁止动态查询和只允许准备好的语句一样。

    否则,您可能需要使用Reflector API执行这种类型的实现。

        2
  •  0
  •   Ash    16 年前

    我认为您需要扩展SecurityManager并使用自己的实现。

    本论坛: http://forums.sun.com/thread.jspa?threadID=761922 讨论如何重写SecurityManager.CheckAccess(ThreadGroup)以防止线程创建,但听起来似乎没有特定的“创建线程Y/N”权限。