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

实战java Concurrent

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/08/05
结束,验证结果:" + node.getResult());          return node;      }        /**      * 将src的内容合并进dest节点中,不进行深度拷贝      */      private Node mergeNode(Node src, Node dest) {          dest.setName(src.getName());          dest.setWsdl(src.getWsdl());          dest.setDependencies(src.getDependencies());          dest.setResult(src.getResult());          return dest;      }  }       请注意ValidationTask的call()方法,这里会先检查节点是否被锁定,如果被锁定则表示当前有另一个线程正在验证该节点,那就不用重复进行验证。第50行和第51行,那到锁后立即释放,这里只是为了等待验证结束。   讲到Lock,就不能不讲Conditon,前者代替了synchronized,而后者则代替了Object对象上的wait()、notify()和notifyAll()方法(Condition中提供了await()、signal()和signalAll()方法),当满足运行条件前挂起线程。Condition是与Lock结合使用的,通过Lock.newCondition()方法能够创建与Lock绑定的Condition实例。JDK的JavaDoc中有一个例子能够很好地说明Condition的用途及用法:Java代码  class BoundedBuffer {    final Lock lock = new ReentrantLock();    final Condition notFull  = lock.newCondition();     final Condition notEmpty = lock.newCondition();       final Object[] items = new Object[100];    int putptr, takeptr, count;      public void put(Object x) throws InterruptedException {      lock.lock();      try {        while (count == items.length)           notFull.await();        items[putptr] = x;         if (++putptr == items.length) putptr = 0;        ++count;        notEmpty.signal();      } finally {        lock.unlock();      }    }      public Object take() throws InterruptedException {      lock.lock();      try {        while (count == 0)           notEmpty.await();        Object x = items[takeptr];         if (++takeptr == items.length) takeptr = 0;        --count;        notFull.signal();        return x;      } finally {        lock.unlock();      }    }   }    说到这里,让我解释一下之前的例子里为什么没有选择Condition来等待验证结束。await()方法在调用时当前线程先要获得对应的锁,既然我都拿到锁了,那也就是说验证已经结束了。。。 3、并发集合类  集合类是大家编程时经常要使用的东西,ArrayList、Has
  • 上一篇资讯: Java 日志组件 LOG4J
  • 下一篇资讯: java concurrent 探秘
  • 网学推荐

    免费论文

    原创论文

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