当前位置: 网学 > 编程文档 > JAVA > 正文

实战java Concurrent

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/08/05
dl() + "]");          count.getAndIncrement();          try {              Thread.sleep(500);          } catch (InterruptedException e) {              e.printStackTrace();          }          return node;      }        /**      * 获得计数器的值      */      public static int getCount() {          return count.intValue();      }        /**      * 克隆一个新的Node对象(未执行深度克隆)      */      public static Node cloneNode(Node originalNode) {          Node newNode = new Node();            newNode.setName(originalNode.getName());          newNode.setWsdl(originalNode.getWsdl());          newNode.setResult(originalNode.getResult());          newNode.setDependencies(originalNode.getDependencies());            return newNode;      }  }     上述代码还有另一个功能,就是构造测试用的节点数据,一共10个节点,有2个入口点,通过这两个点能够遍历整个系统。每次调用会模拟远程访问,等待500ms。环境间节点依赖如下:环境依赖Node0 [Node1, Node2]Node1 [Node3, Node4]Node2 [Node5]Node6 [Node7, Node8]Node7 [Node5, Node9]Node8 [Node3, Node4] 5、CountDownLatch  CountDownLatch是一个一次性的同步辅助工具,允许一个或多个线程一直等待,直到计数器值变为0。它有一个构造方法,设定计数器初始值,即在await()结束等待前需要调用多少次countDown()方法。CountDownLatch的计数器不能重置,所以说它是“一次性”的,如果需要重置计数器,可以使用CyclicBarrier。在运行环境检查的主类中,使用了CountDownLatch来等待所有验证结束,在各个并发验证的线程完成任务结束前都会调用countDown(),因为有3个并发的验证,所以将计数器设置为3。   最后将所有这些类整合起来,运行环境检查的主类如下。它会创建线程池服务和验证服务,先做一次验证(相当于是对系统做次初始化),随后并发3个验证请求。系统运行完毕会显示实际执行的节点验证次数和执行时间。如果是顺序执行,验证次数应该是13*4=52,但实际的验证次数会少于这个数字(我这里最近一次执行了33次验证),因为如果同时有两个线程要验证同一节点时只会做一次验证。关于时间,如果是顺序执行,52次验证每次等待500ms,那么验证所耗费的时间应该是26000ms,使用了多线程后的实际耗时远小于该数字(最近一次执行耗时4031ms)。Java代码  package service.mock;    import java.util.ArrayList;  import java.util.List;  import java.util.concurrent.CountDownLatch;    import service.Node;  import service.ThreadPoolService;  import service.ValidationService;    /**  * 模拟执行这个环境的验证  *   * @a
  • 上一篇资讯: Java 日志组件 LOG4J
  • 下一篇资讯: java concurrent 探秘
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号