黑马程序员技术交流社区

标题: 解释为什么要睡眠10ms [打印本页]

作者: 秦大忠    时间: 2013-10-20 01:26
标题: 解释为什么要睡眠10ms
本帖最后由 秦大忠 于 2013-10-21 11:52 编辑

解释代码中标记为?????????????????????????
的地方,为什么要睡眠十毫秒?
package qin.com;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.List;
public class Demo2 {
public static void main(String[] args) {
  final ArrayList target = new ArrayList();
  //开始创建一个ArrayList类的代理实例,将ArrayLIst强制转换成父类List
  List proxy = (List) Proxy.newProxyInstance(
    // 返回一个指定接口的代理类实例,该接口可以将方法调用指派到指定的调用处理程序
    List.class.getClassLoader(),
    //获取List的类加载器
    ArrayList.class.getInterfaces(),
    //获取需要指定的接口
    new InvocationHandler() {
     // InvotioncationHandler是一个调用处理器,当调用ArrayList中某个方法时,计算该方法的运行时间
     //重写InvocationHandler中唯一的方法invoke()
     public Object invoke(
       Object proxy,
       //在其上调用方法的代理实例
       Method method,
       //对应于在代理实例上调用的接口方法的 Method 实例,调用哪个方法,method对象就代表哪个方法
       Object[] arr
       //包含传入代理实例上方法调用的参数值的对象数组,将方法中调用的参数存入一个数组arr
     ) throws Throwable {
      long beginTime = System.currentTimeMillis();
      Thread.sleep(10);//???????????????????????????????????????????????????????????????????????
      Object reVal = method.invoke(target, arr);
      //该invoke方法时Method中的方法,而不是InvocationHandler中方法,带有arr参数的方法中,如果该
      //方法完成,则将该方法的返回值返回给调用者,相当于运行一次target中某一个方法
      long endTime = System.currentTimeMillis();
      System.out.println(method.getName()+"()的运行时间是"
         + (endTime - beginTime));
      return reVal;
      //该返回值是调用代理实例中某个方法时该方法返回的值
     }
    });
  proxy.add("bucuo");
  proxy.remove("nihaoa");
  System.out.println(proxy.toString());
}
}
图片看不清楚,可以粘贴到MyEclipse里面按Ctrl+Shift+F格式就会规范了

QQ图片20131020012329.jpg (74.86 KB, 下载次数: 65)

QQ图片20131020012329.jpg

作者: 潘才新    时间: 2013-10-20 01:32
看不清,把代码粘出来
作者: 秦大忠    时间: 2013-10-20 01:34
潘才新 发表于 2013-10-20 01:32
看不清,把代码粘出来

潘哥你怎么还没睡?
作者: 李泰然    时间: 2013-10-20 08:55
如果不加睡眠10ms,你的程序的运行结果显示的运行时间有可能是0,所以为了可以明显看到运行时间,加上睡眠10ms,这是我个人理解
作者: 黄文伯    时间: 2013-10-20 09:37
亲,如问题已解决请将分类的“未解决”改为“已解决”。以后的问题贴也要及时更改分类哦~
作者: nineteen73    时间: 2013-10-20 11:06
给你自己看的,你可以改一下程序,改成0,再改成1000,看看分别有什么变化就知道了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2