博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年3月9日

摘要: 生产者与消费者多线程实现,首先的问题就是同步,就是关于临界资源的访问我们首先来定义一个临界资源类,这里设为Qclass Q{ int z=4; }这个int型的z就是我假设的临界资源的个数然后是生产者的put动作synchronized void put() { if(z>0)//当临界资源的个数大于0时,生产者等待wait,否则,生产者进行生产,生产之后唤醒notifyAll()挂起的消费者 { try{wait();}catch(Exception e){} } else { System.out.print(Thread.currentThread()+" ") 阅读全文

posted @ 2012-03-09 21:55 Amy-lover 阅读(1081) 评论(0) 推荐(1) 编辑

2011年11月5日

摘要: 7.1简介 许多问题可以转化为一类图的问题,这些问题的起源不仅仅在与计算机相连接,而且在整个自然,工业和商业领域。解决许多图问题的高效算法的发展对人们在所有这些领域解决实际问题的能力有重要的影响。然而,现在许多重要的图问题还没有已知的高效解决方案。对于其他的,还不知道现在已知的解决方案是不是尽可能高效,或者还可以修正以达到进一步的改善。 在本章中,我们介绍图的定义和图的基本属性。然后我们将讲述图的... 阅读全文

posted @ 2011-11-05 22:16 Amy-lover 阅读(1173) 评论(0) 推荐(0) 编辑

2011年10月26日

摘要: 6.1简介动态集是一个在计算过程中其成员变化的集合。在一些应用中,集合初始为空并且在计算过程中插入元素。往往一个集合可能会增长,它的最大大小不能事先很准确的知道,另一个应用开始于一个大的集合并且在计算过程中删除元素(当集合变成空的时候往往终止)。一些应用既插入又删除元素。开发出来的各种各样的数据结构来代表这些动态的集合。基于需要的操作和访问模式,不同的数据结构式高效的。首先我们描述数组倍增技术,该技术经常需要用来描述动态集合复杂应用的效率。最后,我们抽查了几种常用的发现对动态集合非常有用的数据结构。他们提出适当的抽象数据类型(ADT)的实现。红-黑树提供了一种平衡树,高效地实现二叉树非常有用。 阅读全文

posted @ 2011-10-26 21:38 Amy-lover 阅读(414) 评论(0) 推荐(0) 编辑

2011年10月17日

摘要: 5.1简介在本章中我们研究的几个可以归为一类的问题--选择,找出一个集合的中间元素是其最经典的例子,除了找到一个高效的算法来解决这个问题,我们还需要找出这个问题的下界。在这里我们介绍一个广泛应用的技术----对策论来建立下界。5.1.1选择问题假设有n个元素的数组E,其关键字线性排列,而且,设整型k,1≤k≤n,选择问题就是找出数组E中最小的k个元素,这些元素被排序了k个.就像大多数我们研究过的排序算法一样。我们假设在这些关键字上进行的唯一操作就是一对一对的比较(并复制或者移动)。本章关键字和元素将被认为是唯一的,因为我们的关注点在元素的比较,而且我们也不关注元素的移动,还有,当元素存储在数组 阅读全文

posted @ 2011-10-17 16:12 Amy-lover 阅读(506) 评论(0) 推荐(0) 编辑