java的回调技术浅谈
我们经常会用System.currentTimeMillis()在事件开始前和结束后设置一个开始时间和结束时间,用他们的差作为程序执行的时间。
我们不妨定义一个接口用java回调来实现动态计算。
接口定义:
package com.hd123.h5.ejb.verctrl;
public interface CallBack {
public void callBack();
}
然后是实现这个接口
package com.hd123.h5.ejb.verctrl;
public class Run {
//由于接口中的 callBack方法是没有定义的,所以用一个接口对象执行callBack()方法,其实是未知的,我们具体需要实现的方法
//可以通过callBack(),这个方法的不同实现来实现动态计时。
private void run(CallBack callBack, String event) {
long startTime = System.currentTimeMillis();
callBack.callBack();
long endTime = System.currentTimeMillis();
System.out.print("执行" + event + "共消耗" + (endTime - startTime) + "ms");
}
public static void main(String[] args) {
Run r=new Run();
//这里动态的实现callBack方法。
r.run(new CallBack(){
public void callBack() {
for(int i=0;i<999;i++){
for(int j=i+1;j<99999;j++){
}
}
}
}, "循环");
}
}
相关文档:
Java学习从入门到精通
一、 JDK (Java Development Kit)
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的J ......
31、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
SessionBean:Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一次调用一个Stateful S ......
一、同步问题提出
线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。
例如:两个线程ThreadA、ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据。
public class Foo {
private int x = 100;
public int getX() {
&nbs ......
1.声明一个map: Map map = new HashMap();
2.向map中放值,注意:map是key-value的形式存放的.如:
map.put("sa","dd");
3.从map中取值:String str = map.get("sa").toString();结果是:str = "dd";
4.遍历一个map,从中取得key 和value
JDK1.5
Map m = new HashMap();
for ( ......
使用jinvoke调用windowsAPI。jna使用比较麻烦,需要写c代码和参数转换,jinvoke的使用就像jdk中的包一样。
官网使用参考:http://www.jinvoke.com/calling-the-win32-api-from-java
一个弹出框的例子(这种代码用于调用任何dll,不只是windows的,也可以是自己写的dll)
import com.jinvoke.JInvoke;
import com.jinvok ......