public void run() {
		try {
			List<FutureTask<EntityBean>> futureTaskList = new ArrayList<FutureTask<EntityBean>>();
			ExecutorService exec = Executors.newFixedThreadPool(4);
			
			logger.info("----------------------starting downloading----------------------------");

			long cter = 0;
			for(EntityBean e : listBean){
				FutureTask<EntityBean> ft = new FutureTask<EntityBean>(new DownloadImg(e));
				futureTaskList.add(ft);
				exec.submit(ft);
				cter++;
				cter = cter%5000;
				if(cter==0){
					Thread.sleep(30000); //每下载5000个，休眠60s
					logger.info("sleep 30 seconds waiting for uploadThread to deal with files");
				} else {
					Thread.sleep(20);
				}
			}
	
			//处理futureTask返回的值
			int ct = 0;
			for (FutureTask<EntityBean> tempFt : futureTaskList) {
				try {
					EntityBean ret = tempFt.get();
					if(ret != null){
						logger.info("downloading finished task["+ct+"] info: "+ret.toString());
					}
					ct++;
				} catch (InterruptedException e) {
					logger.error("InterruptedException occurred in MultiDownload.run() ",e);
				} catch (ExecutionException e) {
					logger.error("ExecutionException  occurred in MultiDownload.run() ",e);
				}
			}
			logger.info("---------downloading finished, total downloading tasks executed ["+ct+"] ----------");
//			EntityBean et = new EntityBean();
//			et.setStatus(ENDSINGEL);
//			this.concurrentLinkedQueue.add(et);
			// 处理完毕，一定要记住关闭线程池，这个不能在统计之前关闭，因为如果线程多的话,执行中的可能被打断
			exec.shutdown();
		} catch(Exception e){
			e.printStackTrace();
			logger.error("", e);
		}		
	}