读书人

java.util.concurrent 之七:先上载完

发布时间: 2012-11-01 11:11:32 作者: rapoo

java.util.concurrent 之七:先下载完成的图片先显示
考虑以下场景:浏览网页时,浏览器用了5个线程下载网页中的图片文件,由于图片大小、网站访问速度等诸多因素的影响,完成图片下载的时间就会有很大的不同。先下载完成的图片就会被先显示到界面上,反之,后下载的图片就后显示。


Java的并发库的CompletionService可以满足这种场景要求。该接口有两个重要方法:submit()和take()。submit用于提交一个runnable或者callable,一般会提交给一个线程池处理;而take就是取出已经执行完毕runnable或者callable实例的Future对象,如果没有满足要求的,就等待了。 CompletionService还有一个对应的方法poll,该方法与take类似,只是不会等待,如果没有满足要求,就返回null对象。



运行结果:
Show web contentDownloaded Image 2Downloaded Image 3Downloaded Image 0Downloaded Image 4Downloaded Image 1End


读书人网 >编程

热点推荐