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

实战java Concurrent

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/08/05
hMap什么的,java.util包中的集合类有的是线程安全的,有的则不是,在编写多线程的程序时使用线程安全的类能省去很多麻烦,但这些类的性能如何呢?java.util.concurrent包中提供了几个并发结合类,例如ConcurrentHashMap、ConcurrentLinkedQueue和CopyOnWriteArrayList等等,根据不同的使用场景,开发者可以用它们替换java.util包中的相应集合类。   CopyOnWriteArrayList是ArrayList的一个变体,比较适合用在读取比较频繁、修改较少的情况下,因为每次修改都要复制整个底层数组。ConcurrentHashMap中为Map接口增加了一些方法(例如putIfAbsenct()),同时做了些优化,总之灰常之好用,下面的代码中使用ConcurrentHashMap来作为全局节点表,完全无需考虑并发问题。ValidationService中只是声明(第17行),具体的使用是在上面的ValidationTask中。Java代码  package service;    import java.util.ArrayList;  import java.util.List;  import java.util.Map;  import java.util.concurrent.ConcurrentHashMap;    /**  * 执行验证的服务类  *   * @author DigitalSonic  */  public class ValidationService {      /**      * 全局节点表      */      public static final Map<String, Node> NODE_MAP = new ConcurrentHashMap<String, Node>();        private ThreadPoolService threadPoolService;            public ValidationService(ThreadPoolService threadPoolService) {          this.threadPoolService = threadPoolService;      }        /**      * 给出一个入口节点的WSDL,通过广度遍历的方式验证与其相关的各个节点      *       * @param wsdl 入口节点WSDL      */      public void validate(List<String> wsdl) {          List<String> visitedNodes = new ArrayList<String>();          List<String> nextRoundNodes = new ArrayList<String>();            nextRoundNodes.addAll(wsdl);          while (nextRoundNodes.size() > 0) {              List<ValidationTask> tasks = getTasks(nextRoundNodes);              List<Node> nodes = threadPoolService.invokeAll(tasks);                visitedNodes.addAll(nextRoundNodes);              nextRoundNodes.clear();              getNextRoundNodes(nodes, visitedNodes, nextRoundNodes);          }      }        private List<String> getNextRoundNodes(List<Node> nodes,              List<String> visitedNodes, List<String> nextRoundNodes) {          for (Node n
  • 上一篇资讯: Java 日志组件 LOG4J
  • 下一篇资讯: java concurrent 探秘
  • 网学推荐

    免费论文

    原创论文

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