程序设计大概是这样的:我先发送报文,在接收到应答报文后,对应答报文进行检测操作。
遇到的问题:如下,sendMsg()后,因为RecvMsg()是自动回调函数,得等待RecvMsg()被调用收到应答报文后,才能checkRespMsg(),这中间需要锁或者什么来同步一下,该怎么做?
public static void main(String[] args){
sendMsg();
//这里该写什么
checkRespMsg();
}
public static void RecvMsg(){
//这里该写什么
}
9 回答

侃侃尔雅
TA贡献1801条经验 获得超16个赞
不要把简单的事情弄复杂,你应该这样子写,就可以轻松地解决你的问题了,不要乱加什么锁。
public static void main(String[] args){ sendMsg(); } public static void RecvMsg(){ //收到数据后 //就检查 收到的数据。 checkRespMsg(); }

精慕HU
TA贡献1845条经验 获得超8个赞
我之前也是这样想的,但是checkRespMsg()需要参数,RecvMsg()因为是其他人写的jar包里的回调函数,无法提供该参数;不然就要用全局变量了。而我也想学习一下锁和同步问题,就是这样

千巷猫影
TA贡献1829条经验 获得超7个赞
下一个发送的报文会用到前一个报文的应答,sendMsg()是for循环发送的,这样会出现发了两三个报文,才收到第一个报文的应答,而且后面发送的报文会出错
添加回答
举报
0/150
提交
取消