首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中阻止线程创建/启动

在Java中阻止线程创建/启动
EN

Stack Overflow用户
提问于 2014-03-06 12:06:23
回答 2查看 1.1K关注 0票数 1

我的问题,类似于

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

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

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

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

然而,学生仍然可以在他们的代码中创建线程,在循环中设置它们,最终耗尽系统/Tomcat资源。

有没有办法防止创建线程?引述的答案是:

代码语言:javascript
复制
"""From your perspective, just change the policy."""

这在实践中意味着什么?

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

EN

回答 2

Stack Overflow用户

发布于 2015-06-25 10:06:01

您引用的other question的可接受答案不正确。为了防止代码创建新线程,您需要将标准Java子类化为SecurityManager,并覆盖getThreadGroup或checkAccess(ThreadGroup)。我已经发布了另一个问题的答案和详细信息。

票数 4
EN

Stack Overflow用户

发布于 2014-03-06 12:08:52

看起来你想要做的是创建另一个JVM (例如java进程),如果事情失控,它可能会被批量终止。你有什么理由不这么做吗?

您还可以将自己的jar添加到新JVM的类路径中,并使用您的JAR作为入口点。这样,您就可以在可疑代码运行之前设置自定义安全管理器之类的东西。您还可以在权限受限的帐户下运行JVM,以防止恶意系统交互。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22214684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档