Java Signal实例
来源:互联网 发布:好用的国货护肤品知乎 编辑:程序博客网 时间:2024/05/18 15:06
TimYang在博文《降低应用latency方法谈》中提到对Java方法进行Profiling,在某些场景更倾向于采用纯Java工具类的方法,比如通过给进程发Signals来实现,以求动态地打开或关闭Profiler。
感觉这个思路不错,以下是一个大致实例:
SignalTest.java
/** * */package signal;import java.util.Observable;import java.util.Observer;import sun.misc.Signal;import sun.misc.SignalHandler;/** * @author xuanyin * */public class SignalTest implements Observer {/** * @param args */public static void main(String[] args) {new SignalTest().go();}private void go() {try {HandlerTest sh = new HandlerTest();sh.addObserver(this);sh.handleSignal("HUP");sh.handleSignal("BUS");System.out.println("Sleeping for 60 seconds: hit me with signals!");Thread.sleep(60000);} catch (Throwable x) {x.printStackTrace();}}/** * */@Overridepublic void update(Observable arg0, Object arg1) {System.out.println("Received signal: " + arg1);}/** * HandlerTest Class */class HandlerTest extends Observable implements SignalHandler {@Overridepublic void handle(Signal signal) {setChanged();notifyObservers(signal);}/** * * @param signalName * @throws IllegalArgumentException */public void handleSignal(String signalName) throws IllegalArgumentException {try {Signal.handle(new Signal(signalName), this);} catch (IllegalArgumentException x) {throw x;} catch (Throwable x) {throw new IllegalArgumentException("Signal unsupported: "+signalName, x);}}}}
首先运行执行上述程序,然后查看其系统进程号。
如,若是4089,则在终端中执行kill -s BUS 4089
Java程序输出:Received signal: SIGBUS
信号具有平台相关性,不同平台下能使用的信号种类是有差异的。
Linux下支持的信号:
SEGV, ILL, FPE, BUS, SYS, CPU, FSZ, ABRT, INT, TERM, HUP, USR1, USR2, QUIT, BREAK, TRAP, PIPE
Windows下支持的信号:
SEGV, ILL, FPE, ABRT, INT, TERM, BREAK
不足之处欢迎大家留言指正:)
0 0
- Java Signal实例
- Java Signal实例
- C函数signal实例
- signal(SIGIO,XXXX)实例
- signal 传参实例
- signal函数使用小实例
- linux fork signal 编程实例
- c实现signal函数实例
- linux应用编程:signal(信号量) 实例1
- signal学习代码实例(sigaction/signalfd)
- linux下线程通过signal通信实例
- Java中的await()/signal()用法
- Java await/signal基础应用
- signal
- signal
- Signal
- signal
- signal
- 六大设计原则之“单一职责原则”
- C# FTP 文件处理
- 蓝桥杯 括号问题
- 六大设计原则之“里氏替换原则”
- 使用JMeter进行性能测试之Java请求
- Java Signal实例
- 维卡币 数字财富
- 门面模式(Facade Pattern)
- Java synchronized中设定监视器时易犯的错
- 使用iBatis的类型处理器TypeHandlerCallback
- eWebEditor的asp版本破解
- Activity生命周期概述
- Activity的launchMode总结
- 运用Data URI scheme规范展现图片