public EntityBean call() {
			OutputStream os = null;
			InputStream is = null;
			String fp = null;
			try {
				String urlstr = this.e.getViewUrl();
				String fid = urlstr.substring(urlstr.lastIndexOf("/") + 1);
				long sid = Thread.currentThread().getId();
				Random rand = new Random();
				int ri = rand.nextInt(100);
				String prefix = new Long(sid).toString()+"_"+new Integer(ri).toString();
				fid = prefix + "_"+fid;
				String filePath = MultiDownload.fpath + fid;
				fp = filePath;
				URL url = new URL(urlstr);
				File outFile = new File(filePath);
				os = new FileOutputStream(outFile);
				is = url.openStream();
				byte[] buff = new byte[1024];
				while (true) {
					int readed = is.read(buff);
					if (readed == -1) {
						break;
					}
					byte[] temp = new byte[readed];
					System.arraycopy(buff, 0, temp, 0, readed);
					os.write(temp);
				}
				e.setFileTempName(fid);
				e.setFilePath(filePath);
				e.setStatus("downloaded");
				is.close();
				os.close();
				MultiDownload.this.concurrentLinkedQueue.add(e);
				logger.info("added to queue: "+e.toString());
				
				return e;
			} catch (Exception ee){
				MultiDownload.logger.error("", ee);
				e.setStatus("download failure");
				e.setMsg(ee.getMessage()+"  cause: "+ee.getCause());
				MultiDownload.this.mdao.updateStatus(e);
				if(fp!=null){
					File f = new File(fp);
					if(f.exists())
						f.delete();
				}
				MultiDownload.this.concurrentLinkedQueue.add(e);
				return null;
			} finally {
				try {
					if(is!=null){
						is.close();
					}
					if(os!=null){
						os.close();
					}
				} catch(Exception ee){
					
				}
			}	
		}