java 捕捉信号(linux下的kill,ctrl+c)
import sun.misc.Signal;
import sun.misc.SignalHandler;
/***
* java信号处理demo
* @author jiang_qh
*
*/
public class SignalHandlerExample implements SignalHandler{
private SignalHandler oldHandler;
public void handle(Signal signal) {
System.out.println("Signal handler called for signal "
+ signal);
try {
signalAction(signal);
// Chain back to previous handler, if one exists
if (oldHandler != SIG_DFL && oldHandler != SIG_IGN) {
oldHandler.handle(signal);
}
} catch (Exception e) {
System.out.println("handle|Signal handler"
+"failed, reason " + e.getMessage());
e.printStackTrace();
}
}
public void signalAction(Signal signal) {
System.out.println("Handling " + signal.getName());
System.out.println("Just sleep for 5 seconds.");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
System.out.println("Interrupted: "
+ e.getMessage());
}
}
public static SignalHandler install(String signalName) {
Signal diagSignal = new Signal(signalName);
SignalHandlerExample instance = new SignalHandlerExample();
instance.oldHandler = Signal.handle(diagSignal, instance);
return instance;
}
public static void main(String[] args) {
//kill命令
SignalHandlerExample.install("TERM");
//ctrl+c命令
SignalHandlerExample.install("INT");
System.out.println("Signal handling example.");
try {
Thread.sleep(50000);
} catch (InterruptedException e) {
System.out.println("Interrupted: " + e.getMessage());
}
}
}
在linux上运行该程序。然后kill掉其pid,打印:
Signal handling example.
Signal handler called for signal SIGTERM
Handling TERM
Just sleep for 5 seconds.
[dispatch@loc
相关文档:
1. Java SE(Java Platform,Standard Edition)。Java SE 以前称为
J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web
服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。
2. Java EE(Java Platform,Enterprise Edition)。 ......
用java创建Xml的4大类:
Element:节点类
Attribute属性类
Document:指的就是文档类
XMLOutput:输出类
此类是用java建立一个xml文件
public class TestJdom {
//创建XML(模型)dom
public static void main(String[] args) {
  ......
内存溢出与数据库锁表的问题,可以说是开发人员的噩梦,一般的程序异常,总是可以知道在什么时候或是在什么操作步骤上出现了异常,而且根据堆栈信息也很容易定位到程序中是某处出现了问题。内存溢出与锁表则不然,一般现象是操作一般时间后系统越来越慢,直到死机,但并不能明确是在什么操作上出现的,发生的时间点也没有规 ......
Timer位于java.util下面,一般叫他java计时器。
javaAPI的解释如下:
一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。
先来看看效果:
1.设计计时器
import java.io.IOException;
import java.util.Calendar;
import java.util.Timer;
public class TimerTest {
......
Java类中可以定义一个static块用于静态变量的初始化;当类的定义中不含有static块时,编译器会为该类提供一个默认的static块,前提
是存在静态变量的初始化操作;由于静态变量是通过赋值操作进行初始化的,因此可以通过静态函数返回值的方式为其初始化;类定义中可以存在多个static
块,而且在编译时编译器会将多个static ......