论坛首页 Java企业应用论坛

多任务、多线程下载

浏览 2830 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-07-29  
第一次在论坛频道上发文章,大家轻拍。
有需要的可以一起研究一下,学了java也挣不了什么大钱,但可以写一些自己需要的工具,就当娱乐。没有需要的就当看个热闹。

前段时间为了下载播布客上的SWF视频,写了一个多任务、多线程的下载工具。
其中多线程下载部分是引用的ITEYE上别的同学的代码,地址找不到了,但代码中注释
/**
 * 
 * @author annegu
 * @since 2009-07-16
 * 
 */
public class DownloadTask {}

在使用时做了适当的小修改,以适合我的需求。在这里表示感谢!
同时也感谢播布客提供的视频。

关于多任务(多线程)部分还有一些问题不是很明白,希望各位大牛们指点迷津。

用的是jdk5里面的java.util.concurrent包。
	public static void main(String[] args) {
		// 构造一个线程池
		ThreadPoolExecutor threadPool = new ThreadPoolExecutor(5, 5, 30,
				TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(70),
				new ThreadPoolExecutor.DiscardOldestPolicy());
		
		List<Map> list = getDownloadList();
		for (int i = 0; i < list.size(); i++) {
			try {
				// 产生一个任务,并将其加入到线程池
				threadPool.execute(new DownloadThread(list.get(i)));
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}


这里面ThreadPoolExecutor的几个参数值了解的不是很彻底,特别是
new  ArrayBlockingQueue<Runnable>(70)

这个大小难道要比我所有的任务数要大吗?

附上下载列表的样式。解析地址的代码也放在了附件中。
第17讲:Chapter07.Instance.and.Media.Recovery.Structures
http://www.boobooke.com//v//bbk1413
第18讲:Chapter07.Instance.and.Media.Recovery.Structures
http://www.boobooke.com//v//bbk1414


相关代码在附件中。

  • src.rar (6.2 KB)
  • 下载次数: 187
   发表时间:2011-08-02  
ArrayBlockingQueue

设置阻塞队列大小,翻翻源码就知道了
0 请登录后投票
   发表时间:2011-08-02  
Java代码
/**

* @author annegu
* @since 2009-07-16

*/ 
public class DownloadTask {} 
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics