听朋友一个需求,根据A库的t1表数据修改B库t2表的数据,有唯一对应关系。
直接采用java代码一条一条去update,一段程序的优化之路。
最初代码如下:
程序执行10条发现没问题,开始执行100条,发现太慢了。感觉串行去修改效率不高,考虑多线程。直接上多线程代码
emmmm 是多线程,也有shutdown,代码codeview无误。执行结果太慢了。然后想看看是不是多线程,打印了执行线程id,结果发现怎么是串行的。
原来执行还是单线程,代码位置有误,for循环应该放道提交任务的外面,继续修改
打印结果是多线程,happy,解决了。执行300条数据,执行时间居然3分钟,一分钟更新100条,40万需要……
再看也看不出有什么需要修改的地方,想想修改mysql的连接数据,修改线程池数量大小,