NutzCN Logo
问答 同一段代码放在service中被调用和写main方法执行的结果不同
发布于 2286天前 作者 qq_64f81159 2028 次浏览 复制 上一个帖子 下一个帖子
标签:

我用http工具访问一个网站,将获取的内容保存到文件当中,用main方法跑的时候每次获取的内容都是一样的,代码如下

private static void mutiThread(){
		for(int i=0;i<300;i++){
			new Thread(new Runnable(){

				@Override
				public void run() {
					Response resp = Http.get("http://localhost:18081/sjw/front/hbsjwjct");
					if(resp.isOK()){
						String content = resp.getContent();
						File f = new File("D:\\httptest\\nutz\\index_"+R.UU32()+".html");
						Files.write(f, content);
					}
				}

			}).start();
		}
	}

然后我在servcie中写了一个同样的方法,然后通过起一个job调用这个方法,得到的结果是每次内容大小都不一样,内容肯定就不一样了,service中代码如下

public void staticSites(){
		/*List<CmsSite> siteList = this.query();
		for(CmsSite cmsSite:siteList){
			staticSite(cmsSite);
		}*/
		new Thread(new Runnable(){

			@Override
			public void run() {
				Response resp = Http.get("http://localhost:18081/sjw/front/hbsjwjct");
				if(resp.isOK()){
					String content = resp.getContent();
					File f = new File("D:\\httptest\\nutz\\index_"+R.UU32()+".html");
					Files.write(f, content);
				}
			}

		}).start();

	}

job中的代码如下

public class StaticHtmlJob implements Job {
	private static final Log log = Logs.get();

	@Inject
	Dao dao;
	@Inject
	SiteService siteService;

	@Override
	public void execute(JobExecutionContext context)
			throws JobExecutionException {
		JobDataMap data = context.getJobDetail().getJobDataMap();
		String taskId = context.getJobDetail().getKey().getName();
		siteService.staticSites();
		dao.update(Task.class,
				Chain.make("exeAt", (int) (System.currentTimeMillis() / 1000))
						.add("exeResult", "执行成功"), Cnd.where("id", "=", taskId));
	}

}

为什么在service中每次获得的文件大小都不一样。。

11 回复

不一样的地方在哪里

文件大小不一样啊,用main方法生成的统一为109k,而且内容一致,用job的刚才执行了一次 ,貌似就生成了一个文件,大小就10k,我执行了很多次,每次job的结果都不一样。。我也是醉了。

看文件内容

staticSites也就启动一个线程请求了一次写了一个文件

但是大小也不一样,我现在改了一下,通过前台点击一个按钮,调用这个方法,和main方法的调用方法都是一样的了,代码如下,结果是什么都没有生成。。

public void staticSites(){
		for(int i=0;i<300;i++){
			new Thread(new Runnable(){

				@Override
				public void run() {
					Response resp = Http.get("http://localhost:18081/sjw/front/hbsjwjct");
					if(resp.isOK()){
						String content = resp.getContent();
						File f = new File("D:\\httptest\\nutz\\index_"+R.UU32()+".html");
						Files.write(f, content);
					}
				}

			}).start();
		}

	}

别只看大小,看文件内容

现在直接调用再试了下,发现结果都不一致了。。。。。调用300次有的内容是0,有的20K。

你就不看看内容吗?

看了的啊。是不一致的。

怎样的不一致,描述一下啊

大神,图片发给你了。有一个要说明的是,比如有些栏目是beetl自定义标签生成的,不知道这个是不是会产生影响。

添加回复
请先登陆
回到顶部