Asm字节码操纵:Class文件处理流程

有了java.lang.instrument的支持(Java性能监控系列——java.lang.instrument使用),我们可以在运行时修改类的字节码,配合Asm这一操作字节码的利器,可以很容易进行一些访问、测速、统计之类的工作。

 

Asm的典型使用方式如:

public byte [] transform(ClassLoader loader, String className,
                  Class<?>[......]

Read more

Posted in J2EE | Tagged , | Leave a comment

Java Process超时问题处理

Java中有时候会需要调用shell来处理一些任务,但在Java7,8之前,Process并没有提供超时的接口,只有一个永久等待的waitFor。 一般情况下,这运行得很好,但是一旦脚本出现问题,Java线程就会假死,一直处于等待状态。

最近线上就遇到了这么一个问题!

调研一下,Apache的Exec开源项目中采用的处理方法是,新开一个watchdog线程来计算超时时间,watchdog线程循环等待,当等待超过设定的超时时间,则触发InterruptedException,而主线程捕[......]

Read more

Posted in Java | Tagged | Leave a comment

Disruptor参考手册

Disruptor源码地址: https://github.com/LMAX-Exchange/disruptor/,可在wiki中看到本文的英文原文内容。

Disruptor的jar包在Maven中心库存在,只需将其添加到依赖中即可在项目中使用,当然,也可在wiki中直接下载jar包使用。如:

<dependency>
   <groupId>com.lmax</groupId>
   <artifactId>disrupto[......]

Read more

Posted in J2EE | Tagged | Leave a comment