关于多线程队列的Mysql操作

12-12-09 javawebkaifa
各位道友大家好:
我最近项目开发遇到一个模块(数据分析),大致业务场景是这样的,我们与第三方合作,第三方给我们提供数据接口,我们调用就返回数据,但是他最多每一次只可以传入20个商品ID,(每个ID之间的值互不影响)我现在一个用户的用4000商品ID,我采用多线程(20个线程)去调用这个接口,让线程执行完的结果,我放入了一个队列里面,然后另外一方启动多线程去读取队列里面的数据(每一个商品的数据),然后进行加工,最后封装成对象,用Mybatis插入到Mysql数据库。

我感觉我的想法和实现该没有什么问题,与大家分享下,有什么问题,希望给大家一起学习,谢谢!!!

问题一:我不知道我只有处理这个业务的思路是否正确?

问题二:关于采用多线程队列,我采用了安全性的,不知道是否合适?
ExecutorService service = Executors.newFixedThreadPool(20);线程池
BlockingQueue<String> basket = new ArrayBlockingQueue<String>(20);队列

问题三:关于Mysql多线程插入的问题,我没有做个研究,不知道这样会怎么样,成功,失败,成
功的基本上是不是很失去很多性能还不如单条插入?


问题四:如果我采用多线程插入Mysql的时候,业务上有一个问题,需要统计,时间现在存入的商品ID数,因为是多线程嘛,这个数,也不怎么好控制,我现在的想法就是,声明一个 count 变量,让他是线程安全的,当多线程插入的时候,++count,让把这个count 设置到插入Mysql的对象的一个属性上,这样就可以保证了,可以吗?



[该贴被javawebkaifa于2012-12-09 23:14修改过]

[该贴被javawebkaifa于2012-12-09 23:18修改过]

猜你喜欢