java程序的非正常退出的处理 操作系统一级的事件,java无法捕捉到! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这么做看看行不行,先保存所有对象,比如用linklist来保存,发送一个对象从linklist删除一个,那么即使在非正常情况下关闭还是能保留未发送的对象。 用linklist保存的话不是程序关了,linklist也没有了么? 还有一个方法可以,但是比较复杂,就是使用jdi,也就是Java Debug Interface,原理就如同IDE中的debuger一样,可以跟踪另一个jvm的事件和对象,不过由于非常复杂,所以不建议使用。 Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { System.out.println("STOP!"); }}); Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { System.out.println("STOP!"); }});这个再重启的时候可以的对吧 import java.io.*;import java.util.*;import java.net.*;import java.sql.*;public class Start extends Thread { private static boolean bDone = false; private static int closePort = 7707; public void run() { try { while (!bDone) { //从数据库里面把数据不断的取出,放到一个发送队列里Que, //具体发送细节都有Que的一些方法来完成 1.现在如果程序正常关闭,可以通过什么方法设置bDone=true呢? 2.如果因为系统重启,是不是在Class 里面加入该方法 //Runtime.getRuntime().addShutdownHook(new Thread() { // public void run() { // System.out.println("STOP!"); // } //}); 3.如果是系统级的,比如ctrl+ 或者kill -9 pid 是不是就没有任何办法了? } } catch (Exception e) {e.printStackTrace();} System.exit(0); } public static void main(String[] args) throws Exception { Start sender = new Start(); sender.start(); }} 回答: 1,可以在另外的线程里面关闭。 2,Runtime.getRuntime().addShutdownHook 只在虚拟机正常退出的时候才能起作用。 3,我在上边的回复中已经答过了。 sql server2000 和eclipse连接出错 有关static修饰和函数重载的问题!急!!! 接口问题 如何:java程序里调用java的jar程序(文件)呢? 苦求,一個關於SQL的問題! 如何从socket读入一个float型数据?(请进)在线等待 double/float型去小数位 提个小问题 帮我解决一个java中文问题 大家知道这个图是怎么画出来的么 DTD支持通配符吗? 弱弱的问:关于HelloWorld
public void run() {
System.out.println("STOP!");
}
});
public void run() {
System.out.println("STOP!");
}
});这个再重启的时候可以的对吧
import java.io.*;
import java.util.*;
import java.net.*;
import java.sql.*;public class Start extends Thread {
private static boolean bDone = false;
private static int closePort = 7707; public void run() { try {
while (!bDone) {
//从数据库里面把数据不断的取出,放到一个发送队列里Que,
//具体发送细节都有Que的一些方法来完成 1.现在如果程序正常关闭,可以通过什么方法设置bDone=true呢?
2.如果因为系统重启,是不是在Class 里面加入该方法
//Runtime.getRuntime().addShutdownHook(new Thread() {
// public void run() {
// System.out.println("STOP!");
// }
//}); 3.如果是系统级的,比如ctrl+ 或者kill -9 pid 是不是就没有任何办法了?
} } catch (Exception e) {e.printStackTrace();}
System.exit(0);
} public static void main(String[] args) throws Exception {
Start sender = new Start();
sender.start();
}
}
2,Runtime.getRuntime().addShutdownHook 只在虚拟机正常退出的时候才能起作用。
3,我在上边的回复中已经答过了。