如何解决多线程编程,子线程的数据源来源于主线程的问题?
大家好!最近又遇到一个新问题。当前主线程A接收各种类型的数据,然后根据数据类型分发给对应的处理模块对数据进行处理。其中,一个模块需要以5Mb/s的速度对数据进行比对,统计等操作(这个模块比较耗时)。然后问题来了,如果让这些模块同步运行,势必会造成界面卡顿,甚至假死的现象。如果使用基于委托的BeginInvoke,速度是有了,界面不会卡,但是由于这个方法本身的回调顺序不确定,我不能采用这种方法。因为我必须按循序处理数据。然后我又采用另开一个线程B处理这个模块,发现这个数据源的问题真的很难解决,因为两个线程异步执行,数据源的更换速度又很快,运行的过程中发现部分数据直接丢失了。后来查了资料,说线程直接最好避免依赖性。但是B线程的数据源必须来源于线程A,而且数据源只能从A获取,无法转到B线程中。今天又查了资料,说还有基于任务的异步,但是其原理我还没有看完,目前还在努力查资料中。
PS:由于这个问题需要急着解决,所以在此发个帖子,希望有朋友知道的可以马上告诉我,可以节省我很多时间,谢谢大家。
PS:由于这个问题需要急着解决,所以在此发个帖子,希望有朋友知道的可以马上告诉我,可以节省我很多时间,谢谢大家。
...全文
相关推荐
springboot多数据源即分布式事务解决方案,添加对多线程的支持
实现系统对多数据源的操作。 实现系统对多数据源的分布式事务管理,包括事务的提交和回滚。
钉钉Java面经及参考答案
TCP 三次握手建立连接的核心目标是双向确认双方发送、接收能力,同步通信序列号,协商初始窗口大小,防止历史过期连接报文干扰新连接。第一次握手,客户端主动向服务端发送 SYN 报文,携带客户端随机生成的初始序列号 ISN,客户端状态变更为 SYN_SENT,目的是告知服务端客户端具备发送数据的能力。第二次握手,服务端收到 SYN 报文后,回复 SYN+ACK 报文,其中 ACK 确认号为客户端 ISN+1,同时携带服务端自身随机初始序列号,服务端进入 SYN_RCVD 状态,代表服务端确认收到客户端报文,且自
Springboot Druid多数据源 多线程
一个基于Springboot的小项目,采用Druid多数据源的设计,可以同时操作Mysql与Oracle数据库,配置了多线程处理任务,为刚接触springboot的朋友提供参考。
解决配置oracle数据源报错问题
配置oracle 10g odbc数据源的时候提示an unsupported operation was attempted 具体解决方法:下载压缩包,用压缩包内的文件替换本地电脑内的文件。 信息来源:http://oooo-h.iteye.com/blog/1435190
解决方案_Tableau连接多个EXCEL数据源后只保留一个数据源BUG的解决方案
解决方案_Tableau连接多个EXCEL数据源后只保留一个数据源BUG的解决方案



