java,for循环执行5000条数据分别进行调用5个平台的API,然后保存到本地数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java,for循环执行5000条数据分别进行调用5个平台的API,然后保存到本地数相关的知识,希望对你有一定的参考价值。

各位,我先来说一下我遇到的问题吧,就是执行5000条数据的时候程序经常
会死掉,不会报错,不会执行,像卡死了一样。具体的流程是这样子的,首
先是一个java定时器(每15分钟执行一次任务)任务的流程是:1,调用sql存储
过程,更新数据;2,获取更新了的数据(大概5000条左右);3,for循环执
行这5000条数据(每一条数据都会去调用淘宝,当当,一号店,京东,天猫
的API进行交接,交接完毕之后把执行的每一条数据保存至本地的数据库中,
然后每一条数据执行的详细情况写入本地的一个txt文件中。然后执行第二个
流程,5000条数据再一次调用淘宝,当当,一号店,京东,天猫的另外一个
API进行交接,交接完毕之后保存数据库,写入txt。)4,每天执行这些步骤,
15分钟执行一次。
可是有一个问题就出来了,每次执行到2000或者是3000的时候程序就会死掉
(不报任何错误,因为我在控制台打印了fro循环里面正在执行的数据的编号
)。我使用的是SSH框架,spring,hibernate,struts2。
请问各位大牛,有没有什么好的方法来完成这一步骤吗?
我以前想到的是把这5000条数据进行分页,然后分页执行,不知道这是不是
一个办法,或者是有更好的办法呢?希望大家踊跃发表自己的意见。感激不
尽。
因为平时没有太多的上百度做任务所以财富值为0,但愿大家不要介意啊。能
帮就帮啊。

没用过java,只用过c#,这类问题算是比较常见的生产和消费者问题,你搜索的时候也可以搜索java 生产消费者 去查找,你的算法应该算是效率很低的,如果一次只处理一条数据的话,对于不同的淘宝当当之类的是可以同时开不同线程的,另外当然也可以一次处理多条数据,效率就会更高一些。具体方法你百度一下 java 生产消费者 应该都可以找到答案。 参考技术A 你可以在循环里面加入线程的sleep。每500条sleep1秒。追问

哥,我加了,不过我不是加在for循环里面,我是加在第一步(掉用sql的存储过程后面),还有执行第二步流程,再一次5000条调用5个平台的API前面。没有用的。

追答

你没懂我意思,你可以这样试试
for循环里面
if(i%500==0)sleep
这样子。

追问

我知道你的是这个意思哦,我不是在循环里面加的。不知道这样加有没有用呢,哥你再想想办法?用生产者和消费者的模式可以吗?

参考技术B 不要使用Java只使用C#,这个问题是比较常见的生产和消费问题,当你搜索,你可以搜索Java的消费者发现你的算法应该被认为是低效的,当然,如果有时间处理数据的生产,不同的像淘宝,当当网可以打开不同的线程在同一时间,此外,还可以更有效地处理多个数据。具体方法百度的Java生产消费者应该能够找到答案。 参考技术C 将数据分拆,数据不要一次都传过去。希望可以帮到你

java 后执行的for循环比先执行的for循环速度快

在测试嵌套for循环效率时发现的问题。
一个main方法中,执行两个嵌套for循环,顺序如下:
第一个for循环:

外层是for (int i=0; i<1000000; i++),
内层是for (int j=0; j<100; j++)。
第二个for循环:
外层是for (in i=0; i<100; i++),
内层是for (int j=0; j<1000000; j++)

分别打印了执行两个嵌套for循环的时间,按理来说,应该是外层数量少的要执行的快,但实际情况下是,不管外层是是否小于内层,都是第二个for循环所花费的时间要少得多,不明白其中的道理,求助!

程序是从main方法入口,然后从上到下去执行的。
执行过程如下:
先执行 第一个for循环,再到第一个for循环的外层第一个,到第一个for循环的内层0-99次。
当第一个for循环的执行完成之后。再执行第二个for循环。
------------------------------------------------------------------------
这里强调一点:程序是从上到下执行的,第一个for循环如果没有执行完成,第二个for循环就不能执行,这有点像上厕所一样,里面的人不完事,外面的就只能一直等。

不理解的可以追问
参考技术A java是解释型的。是面向对象的(c++也是)。从速度上来看,c++能快点。但是我感觉还是java比较好一些。她的一些特性,决定了她的领先地位。 参考技术B 不明白你说什么。第二个循环不就是外层数量少的么?

以上是关于java,for循环执行5000条数据分别进行调用5个平台的API,然后保存到本地数的主要内容,如果未能解决你的问题,请参考以下文章

mysql数据查询,共有5000条数据,要有三种返回结果。

关于java list循环的问题

在java里面如何运行多条cmd命令?我是用for来循环,一次运行一条,可是老是不执行。

Python循环语句

java循环一亿次耗时多久

java 后执行的for循环比先执行的for循环速度快