用Process类实现了调用DOS命令,可是怎么保证在异常的时候会destroy()?finalize()好象没作用啊。 process.destroy()肯定能关闭外部程序。但你需要确定什么时候才能调用process.destroy() 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的程序运行在TOMCAT下,如果TOMCAT立即关闭,程序中并不会调用 close(),所以我加了finalize(),可是好象finalize()没什么作用。有什么好办法吗? finalize()只有在gc收垃圾的时候才会被调用。楼上说的有理,要看你的需求啦! 不过如果你的类是作为SERVLET调用的话可以写一个方法:public void destroy() { process.destroy(); }这个方法在TOMCAT关闭之前会调用的。OK了。如果不是SERVLET,也可以在一个SERVLET里面调用这个close(),把它申明为static类型的。SERVLET呢,就把它配置成自动启动的。web.xml里给该SERVLET配置加上: <load-on-startup>1</load-on-startup> 那么楼上的不是servlet 以自动启动就会先destroy掉?? 而且 为什么 我会出现这种错误java.lang.IllegalMonitorStateException: current thread not owner at java.lang.Object.wait(Native Method) to javahui(阶级斗争要年年讲,月月讲,天天讲。我是使用AXIS,可是我不能修改AXIS的代码来调用这个destroy()方法吧。 finalize()方法的调用可能是不可预知的。所以不能保证他一定执行。而且有可能在类刚实例花的时候finalize()就被调用。当然不必修改AXIS的代码。但是你可以写一个小SERVLET,保证JSP容器启动的时候启动这个SERVLET。这个SERVLET实现一个destroy()方法。该方法一定会在JSP容器关闭的时候执行。这样你就可以在这个destroy()方法里面执行一些清理资源的收尾方法。 我的程序里直接调用process.destroy();也无法关闭子进程,不知为什么 直接调用process.destroy()应该可以吧。我有一个JSP页面,把process定义为全局对象,每次执行新任务前就执行process.destroy(),总可以关闭子进程的。 process.destroy()是不是关闭所有的子进程(是不是dos里运行的程序),借光问一下 to javahui(阶级斗争要年年讲,月月讲,天天讲。) 我的程序中是这样的:通过JAVA程序启动一个.bat文件,在.bat文件中又会启动其他进程,比如java.exe这样子进程启动后会出现一个cmd进程,同时还有一个java进程。调用process.destroy()后,只能关闭cmd进程,无法关闭java进程。有没有什么好办法? 关于监听器的一些事? 一个比较诡异的问题 JBOSS部署问题。。 java 中读取本地xml正常。但远程就变成乱码。(同一个文件,是繁体的) 关于显示主机上的文件问题? 怎样用jsp把word表格的数据读如oracle数据库,各位大虾指点 高分咨询,看书说java非0长度的数组都是可变的,不能理解,难道不是在堆里一次分配好固定大小的吗? byte[]转换String 新手求解答 写一个方法,向它传递一个对象,循环打印出对象层次结构中的所有类?thinking in java里面的一个习题不知道如何做请教高手? 连接ORACLE的问题! jar文件??
有什么好办法吗?
楼上说的有理,要看你的需求啦!
public void destroy() {
process.destroy();
}
这个方法在TOMCAT关闭之前会调用的。OK了。如果不是SERVLET,也可以在一个SERVLET里面调用这个close(),把它申明为static类型的。
SERVLET呢,就把它配置成自动启动的。
web.xml里给该SERVLET配置加上:
<load-on-startup>1</load-on-startup>
我会出现这种错误
java.lang.IllegalMonitorStateException: current thread not owner
at java.lang.Object.wait(Native Method)
我是使用AXIS,可是我不能修改AXIS的代码来调用这个destroy()方法吧。
我的程序中是这样的:
通过JAVA程序启动一个.bat文件,在.bat文件中又会启动其他进程,比如java.exe
这样子进程启动后会出现一个cmd进程,同时还有一个java进程。
调用process.destroy()后,只能关闭cmd进程,无法关闭java进程。
有没有什么好办法?