java实现检测死循环程序,并做处理

maoaini_1990 2013-12-25 03:04:32
我在现在在做一个项目(用java实现),就是检测学生提交上来了的java程序,学生交的程序会出现死循环的这种情况,我需要自动的判断出学生的程序中出现了死循环,并且处理这个死循环,让它终止检测这个学生的代码,继续检测下一个学生的代码。有没有什么好的办法啊,被憋了好几天了,跪求大神指导(最好能详细点)。
...全文
889 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mr_boot 2013-12-26
  • 打赏
  • 举报
回复
还是觉得记录执行时间来判断比较现实,学生代码执行不会太复杂,设定时间长度判断是否超时,利用这个就可以解决问题了,可能jvm底层也有方法解决,但个人觉得没有那个必要。
好名字给猪了 2013-12-26
  • 打赏
  • 举报
回复
说说我的想法,页面使用定时器,每隔一段时间执行java类方法。如果这个方法在控制台打印的字数超过N个,就判断他是死循环(一般学生写的程序不会太多吧),然后记录在日志里。
Lsheep 2013-12-25
  • 打赏
  • 举报
回复
楼主说的就是有名的 停机问题。 而且这个问题已经被证明是无解的。但就你的问题而言,学生的程序不会太复杂,基本会在一段时间内执行完毕,楼主可以设定一个时间,超过这个时间就表明有死循环。
maoaini_1990 2013-12-25
  • 打赏
  • 举报
回复
恩恩还是这里的大神比较多啊。。还有就是能不能把具体的技术说的更加详细点,采用java的哪个技术。我是刚开始起步学java干项目,给老师做。做起来比较吃力,希望各位大神能牺牲点时间拜托了。。
商科程序员 2013-12-25
  • 打赏
  • 举报
回复
一般是用定时去检测。如果超过最长运行时间,则认为失败。 北大的网上挑战也是这么做的。从逻辑上判断死循环太难了。而且有时死循环也输入数据有关,有些输入会死循环,有些不会。
Defonds 2013-12-25
  • 打赏
  • 举报
回复
来了。 楼上的建议不错。 可以参考 spring aop 的做法,面向切面编程,统计每个的执行时间。 另外,如果是 bat 跑死循环,那么很容易把你 CPU 吃干。建议把这些进程管理起来,一旦判定死循环立马干掉。
大大点点 2013-12-25
  • 打赏
  • 举报
回复
我怎么觉得做这个项目,对JVM底层如果了解的话,应该可以找到思路的,像死循环无非就是无限次的干同一件事情,JVM底层应该有明显的特征的吧,而且死循环很容易造成内存溢出。也可以适当从这里入手。
maoaini_1990 2013-12-25
  • 打赏
  • 举报
回复
学生的程序是使用Runtime执行外部Bat文件进行编译执行的,如果学生的程序中有死循环的话,就卡在这里了。如何使用类似线程一类的方法去检测这段程序,比如可以设置时间,如果超时则跳过执行。求大神指导。。
maoaini_1990 2013-12-25
  • 打赏
  • 举报
回复
就是死循环会执行的时间比较长啊,或者输出的信息会比较多而且是一样的 但是通过什么方法检测出来 因为这个项目吧比较大 ,我只是负责一部分具体她们是怎么检测的我也不知道,看看大家有没有什么好的思路
tony4geek 2013-12-25
  • 打赏
  • 举报
回复
死循环 这个 很多种情况都会出现死循环。怎么分析出。
姜小白- 2013-12-25
  • 打赏
  • 举报
回复
不懂,mark,跟着学习

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧