和大家讨论下,如何实践多线程读取多个external file,并将相关数据存入DB?
这个IO File会有多条记录。每一个条记录,代表一个行为。如下:
ActionCode AcctNo Name .....
01, 1221, Tom
02, 1221, Tomcat
01 ,1222, James
ActionCode代表这行记录的行为,
01:create也就是增加一行记录。02代表update
AcctNo 代表Key
第一行:代表增加一个记录。账号为1221. Name:Tom
第二行,表明更新账号1221的Name,从Tom变更为Tomcat
第三行,创建账号,名为James
同时并发读取多个文件。多个线程又同时读取一个文件。将相关结果写入DB
我凌乱的思路,让大家见笑了:
比如:数据库连接池有20个连接。有N个File,每个file 10000+ records
1)如何给这N个File分配线程数呢?是不是应该考虑到数据库连接池的大小呢?会不会导致数据库读写阻塞呢?
2)ReentranReadWriteLock可以并发读文件。但是文件中的记录是有关联的。比如第2行记录不能先于第一行。
3)基于②是不是可以用Cyclicbarrier,写读取01(create),然后再进行02(update)
想和大家讨论一下思路。和代码实现无关系。希望能得到您的指点。我将十分感谢您的帮助。谢谢!