本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7596551
建立时间:2006年5月29日




[J2SE]JDK5新特性--java.util.concurrent CyclicBarrier(3)
软件技术

lhwork 发表于 2006/12/11 11:15:57

在实际应用中,有时候需要多个线程同时工作以完成同一件事情,而且在完成过程中,往往会等待其他线程都完成某一阶段后再执行,等所有线程都到达某一个阶段后再统一执行。 比如有几个旅行团需要途经深圳、广州、韶关、长沙最后到达武汉。旅行团中有自驾游的,有徒步的,有乘坐旅游大巴的;这些旅行团同时出发,并且每到一个目的地,都要等待其他旅行团到达此地后再同时出发,直到都到达终点站武汉。 这时候CyclicBarrier就可以派上用场。CyclicBarrier最重要的属性就是参与者个数,另外最要方法是await()。当所有线程都调用了await()后,就


阅读全文(3156) | 回复(0) | 编辑 | 精华 | 删除
 


[J2SE]JDK5新特性--java.util.concurrent BlockingQueue(4)
软件技术

lhwork 发表于 2006/12/11 11:15:33

并发库中的BlockingQueue是一个比较好玩的类,顾名思义,就是阻塞队列。该类主要提供了两个方法put()和take(),前者将一个对象放到队列中,如果队列已经满了,就等待直到有空闲节点;后者从head取一个对象,如果没有对象,就等待直到有可取的对象。 下面的例子比较简单,一个读线程,用于将要处理的文件对象添加到阻塞队列中, 另外四个写线程用于取出文件对象,为了模拟写操作耗时长的特点,特让线程睡眠一段随机长度的时间。另外,该Demo也使用到了线程池和原子整型 (AtomicInteger),AtomicInteger可以在并发情况下达到原子化更新,避免使用了synchronized,而且性能非常高。由


阅读全文(3407) | 回复(0) | 编辑 | 精华 | 删除
 


[J2SE]JDK5新特性--java.util.concurrent CountDownLatch(5)
软件技术

lhwork 发表于 2006/12/11 11:14:00

从名字可以看出,CountDownLatch是一个倒数计数的锁,当倒数到0时触发事件,也就是开锁,其他人就可以进入了。在一些应用场合中,需要等待某个条件达到要求后才能做后面的事情;同时当线程都完成后也会触发事件,以便进行后面的操作。 CountDownLatch最重要的方法是countDown()和await(),前者主要是倒数一次,后者是等待倒数到0,如果没有到达0,就只有阻塞等待了。 一个CountDouwnLatch实例是不能重复使用的,也就是说它是一次性的,锁一经被打开就不能

阅读全文(3784) | 回复(0) | 编辑 | 精华 | 删除
 


[J2SE]JDK5新特性--java.util.concurrent Future(6)
软件技术

lhwork 发表于 2006/12/11 11:10:37

有时候在实际应用 中,某些操作很耗时,但又不是不可或缺的步骤。比如用网页浏览器浏览新闻时,最重要的是要显示文字内容,至于与新闻相匹配的图片就没有那么重要的,所以此 时首先保证文字信息先显示,而图片信息会后显示,但又不能不显示,由于下载图片是一个耗时的操作,所以必须一开始就得下载。 Java的并发库的Future类 就可以满足这个要求。Future的重

阅读全文(2961) | 回复(0) | 编辑 | 精华 | 删除
 


[J2SE]JDK5新特性--java.util.concurrent ExecutorCompletionService(7)
软件技术

lhwork 发表于 2006/12/11 11:09:19

考虑以下场景:浏览网页时,浏览器了5个线程下载网页中的图片文件,由于图片大小、网站访问速度等诸多因素的影响,完成图片下载的时间就会有很大的不同。如果先下载完成的图片就会被先显示到界面上,反之,后下载的图片就后显示。 Java的并发库的CompletionService可 以满足这种场景要求。该接口有两个重要方法:submit()和ta

阅读全文(3215) | 回复(0) | 编辑 | 精华 | 删除
 


[J2SE]JDK5新特性--java.util.concurrent Semaphore(8)
软件技术

lhwork 发表于 2006/12/11 11:06:13

操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java并发库的Semaphore可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,acquire()获取一个许可,如果没有就等待,而release()释放一个许可。比如在Windows下可以设置共享文件的最大客户端访问个数。 Semaphore维护了当前访问的个数,提供同步机制,

阅读全文(2146) | 回复(0) | 编辑 | 精华 | 删除
 


[算法]排序算法
软件技术

lhwork 发表于 2006/12/11 11:03:29

得2004年,我用c++按照算法书上介绍,实现了一些算法,比如排序、查 找、二叉树、AVL、红黑树等。那些代码随着一次次的搬家也不知所踪,也许在原来公司的产品中有它的身影吧。前几天,无聊时翻出了《编程珠玑》这本书,是 一本非常经典的算法书。该书只有200页,花一个下午就能看完大部分内容,还是很值得的。 现在在使用Java语言,也许用Java实现一些算法也是一件很有趣的事情哦。也算是温故而知新吧。 首先还是实现一些简单的排序算法吧。为了简单起见,只实现了升序排序。在我的机器上用QuickSort排序100万个随机整数花费1.6秒左右

阅读全文(2910) | 回复(0) | 编辑 | 精华 | 删除
 


[算法]堆排序算法
软件技术

lhwork 发表于 2006/12/11 11:01:03

堆排序(Heap Sort)是另外一个比较快的排序算法,时间复杂度和快速排序算法属于同一级别,只不过系数要大些。 在我的机器上用堆排序100万个随机整数花费3.3秒,而快速排序(QuickSort)需要1.6秒。 package cn.tenyears.demo;

/**
 *&nb

阅读全文(5417) | 回复(2) | 编辑 | 精华 | 删除
 


[Prototype(Ajax)]prototype对于标签定位的一些BUG
软件技术

lhwork 发表于 2006/12/11 9:25:58

问题起因:
在原来产品中实现的 ajax tree上面添加拖拽效果,为了方便,使用了prototype来简化开发。代码中使用了Poistion.absolutize来改变拖动标签时改变它 的坐标为绝对坐标显示,拖动结束后再使用Poistion.relativize变回相对坐标。

解决过程:
其实一开始测试时都挺 好的,但后来在tree上面使用时就发生问题了,在拖动过程,标签跟着鼠标的移动而改变,没有问题,但在鼠标释放后,标签并没有放置在鼠标释放的位置,而 是向左和向上偏移了,而这偏移的距离刚好就是tree显示位置的left和top。在对拖动结束后的位置计算的代码,拖动过程坐标计算的代码debug了 一天没有收获后,突然想到把样式中的滚动条设置(overflow-x : "auto", overflow-y: "scroll",)删掉试下,没想到就可以了。

经过反复验证,终于证实是滚动条惹的祸,接着就跟踪了prototype中的相关代码,在实现Position.absolutize方法时是

阅读全文(2720) | 回复(0) | 编辑 | 精华 | 删除
 


[算法]Myeclipse所有版本注册码的通用算法(修改版)
软件技术

lhwork 发表于 2006/12/7 14:23:11

是一个通用的Myeclipse注册码生成算法-建议还是买正版 import  java.i

阅读全文(6594) | 回复(2) | 编辑 | 精华 | 删除
 


« 71 72 73 74 75 76 77 78 79 80 »



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.125 second(s), page refreshed 144775893 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号