一个线程接收数据,存入list里,另一个线程从list里去数据入库,接收的快,入库慢,list里的数据一直在增加,内存最后被耗尽了,如何解决? 数据是行情数据,入库的先后顺序不能变
5条回答 默认 最新
- lstmsa 2018-12-05 06:46关注
1、设置一个自增变量,接收一条推送数据自增1用于list自定义列,可以在数据库对应列增加对应唯一ID值并设置索引。
2、随后开设几条线程,如3条线程,线程tag初值分别1、2、3,根据初值从小到大启动,每存一条数据自增线程数的值,3条增3,4条增4以此类推。
3、sql在插入语句增加一个ID连续性的判断(if exists(select 0 from [tb] where ID=@id-1)...),插入前须存在ID减1的条目存在,否则delay若干毫秒后再插入,重复N次。
你不在数据库设置ID也行,那就要判断每线程插入的ID是否是当前list最小值。
4、每线程插入完成最后,删除对应ID的list条目。以上以供参考
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
- ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
- ¥30 eclipse开启服务后,网页无法打开
- ¥30 雷达辐射源信号参考模型
- ¥15 html+css+js如何实现这样子的效果?
- ¥15 STM32单片机自主设计
- ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
- ¥15 不小心不正规的开发公司导致不给我们y码,
- ¥15 我的代码无法在vc++中运行呀,错误很多
- ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。