学生的程序是使用Runtime执行外部Bat文件进行编译执行的,如果学生的程序中有死循环的话,就卡在这里了。如何使用类似线程一类的方法去检测这段程序,比如可以设置时间,如果超时则跳过执行。求大神指导。。

解决方案 »

  1.   

    我怎么觉得做这个项目,对JVM底层如果了解的话,应该可以找到思路的,像死循环无非就是无限次的干同一件事情,JVM底层应该有明显的特征的吧,而且死循环很容易造成内存溢出。也可以适当从这里入手。
      

  2.   

    来了。
    楼上的建议不错。
    可以参考 spring aop 的做法,面向切面编程,统计每个的执行时间。
    另外,如果是 bat 跑死循环,那么很容易把你 CPU 吃干。建议把这些进程管理起来,一旦判定死循环立马干掉。
      

  3.   

    恩恩还是这里的大神比较多啊。。还有就是能不能把具体的技术说的更加详细点,采用java的哪个技术。我是刚开始起步学java干项目,给老师做。做起来比较吃力,希望各位大神能牺牲点时间拜托了。。
      

  4.   

    说说我的想法,页面使用定时器,每隔一段时间执行java类方法。如果这个方法在控制台打印的字数超过N个,就判断他是死循环(一般学生写的程序不会太多吧),然后记录在日志里。
      

  5.   

    还是觉得记录执行时间来判断比较现实,学生代码执行不会太复杂,设定时间长度判断是否超时,利用这个就可以解决问题了,可能jvm底层也有方法解决,但个人觉得没有那个必要。