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

实战java Concurrent

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/08/05
ode : nodes) {              for (String wsdl : node.getDependencies()) {                  if (!visitedNodes.contains(wsdl)) {                      nextRoundNodes.add(wsdl);                  }              }          }          return nextRoundNodes;      }        private List<ValidationTask> getTasks(List<String> nodes) {          List<ValidationTask> tasks = new ArrayList<ValidationTask>(nodes.size());          for (String wsdl : nodes) {              tasks.add(new ValidationTask(wsdl));          }          return tasks;      }  }   4、AtomicInteger  对变量的读写操作都是原子操作(除了long或者double的变量),但像数值类型的++ --操作不是原子操作,像i++中包含了获得i的原始值、加1、写回i、返回原始值,在进行类似i++这样的操作时如果不进行同步问题就大了。好在java.util.concurrent.atomic为我们提供了很多工具类,可以以原子方式更新变量。   以AtomicInteger为例,提供了代替++ --的getAndIncrement()、incrementAndGet()、getAndDecrement()和decrementAndGet()方法,还有加减给定值的方法、当前值等于预期值时更新的compareAndSet()方法。   下面的例子中用AtomicInteger保存全局验证次数(第69行做了自增的操作),因为validateNode()方法会同时被多个线程调用,所以直接用int不同步是不行的,但用AtomicInteger在这种场合下就很合适。Java代码  package service.mock;    import java.util.ArrayList;  import java.util.HashMap;  import java.util.List;  import java.util.Map;  import java.util.concurrent.atomic.AtomicInteger;  import java.util.logging.Logger;    import service.Node;    /**  * 模拟执行节点验证的Mock类  *   * @author DigitalSonic  */  public class MockNodeValidator {      public static final List<Node>         ENTRIES  = new ArrayList<Node>();      private static final Map<String, Node> NODE_MAP = new HashMap<String, Node>();        private static AtomicInteger           count    = new AtomicInteger(0);      private static Logger                  logger   = Logger.getLogger("MockNodeValidator");        /*      * 构造模拟数据      */      static {          Node node0 = new Node("NODE0", "http://node0/check?wsdl"); //入口0    &nb
  • 上一篇资讯: Java 日志组件 LOG4J
  • 下一篇资讯: java concurrent 探秘
  • 网学推荐

    免费论文

    原创论文

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