2 qq 27836205 qq_27836205 于 2017.09.02 16:44 提问

java 如何在for循环中增加三个线程 提高for循环速度

for循环要循环五千次,速度太慢。我想提高速度,想现在在for循环里面写三个线程,进行同步处理,for循环的外部定义了一个list对象,三个线程同步处理的结果都要保存到该list里面,循环结束后要对list进行处理,请问应该如何实现呢?望大神给出具体代码 谢谢!!!
图片说明
图片说明
图片说明

3个回答

caozhy
caozhy   Ds   Rxr 2017.09.02 17:06
已采纳

大致看了下你的代码,你的代码中存在很多线程不安全的地方,比如getAdminCheckList(),以及map和arraylist,而且很可能你的性能问题是频繁大量调用数据库,所以优化的思路是考虑在数据库上跨数据库联合查询或者写存储过程。用多线程没有太大的意义。

qq_27836205
qq_27836205 getAdminCheckList()为什么是线程不安全的呢?这是调用dao层接口方法啊
3 个月之前 回复
caozhy
caozhy   Ds   Rxr 2017.09.02 16:49

把你的for循环代码贴出来才好。另外,像ArrayList本身不是线程安全的,这意味着,你用多线程调用,它还得同步,实际上还是单线程,如果不这么做,那么就会出错。
而 Collections.synchronizedList 就是线程安全的,才可以多线程,但是能不能提高性能,也要看情况。

http://www.cnblogs.com/WuXuanKun/p/5556999.html

qq_27836205
qq_27836205 代码已经贴出来了 我用到了两个数据库
3 个月之前 回复
caozhy
caozhy   Ds   Rxr 2017.09.02 17:07

建议你把你的业务逻辑和表结构整理和简化下,然后去 bbs.csdn.net 的sql server或者mysql板块提问,这样可能得到更专业的回答。

Csdn user default icon
上传中...
上传图片
插入图片