gpt4 book ai didi

java - 防止在 Java 中创建/启动线程

转载 作者:行者123 更新时间:2023-11-29 03:23:37 25 4
gpt4 key购买 nike

我的问题,类似于

why java security manager doesn't forbid neither creating new Thread() nor starting it?

我正在编写一个教学应用程序,允许学生提交执行特定任务的 Java 代码并相互交互。

我们需要安全地加载、编译和执行一些代码。

使用Java工具我们可以在内存中完成代码的编译;然后自定义类加载器加载代码,代码在线程中执行,有一定的超时时间,并使用自定义安全管理器。

但是,学生仍然可以在他们的代码中创建线程,将它们设置为循环并最终耗尽 System/Tomcat 资源。

有没有办法阻止创建线程?引用的答案说:

"""From your perspective, just change the policy."""

这在实践中意味着什么?

我试图覆盖方法 checkPermission(Permission) 和 checkAccess(ThreadGroup) 但我仍然无法拦截线程创建/启动

最佳答案

other question 的公认答案你引用的是不正确的。为了防止代码创建新线程,您需要继承标准 Java SecurityManager 并覆盖 getThreadGroup 或 checkAccess(ThreadGroup)。我已经发布了对其他问题的详细回答。

关于java - 防止在 Java 中创建/启动线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22214684/

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