为了账号安全,请及时绑定邮箱和手机立即绑定

【菜鸟求助】java 锁 同步问题

【菜鸟求助】java 锁 同步问题

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

9 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

sendMsg()和RecvMsg()都是同步的吗?是的话就不用加锁吧;若不是同步的可以将返回报文放到队列、集合中,取出报文进行校验,个人愚见

查看完整回答
反对 回复 2018-12-16
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

不要把简单的事情弄复杂,你应该这样子写,就可以轻松地解决你的问题了,不要乱加什么锁。

public static void main(String[] args){
  sendMsg();
}
public static void RecvMsg(){
   //收到数据后 
  //就检查 收到的数据。
  checkRespMsg();
}

 

查看完整回答
反对 回复 2018-12-16
?
精慕HU

TA贡献1845条经验 获得超8个赞

我之前也是这样想的,但是checkRespMsg()需要参数,RecvMsg()因为是其他人写的jar包里的回调函数,无法提供该参数;不然就要用全局变量了。而我也想学习一下锁和同步问题,就是这样

查看完整回答
反对 回复 2018-12-16
?
忽然笑

TA贡献1806条经验 获得超5个赞

@Gotogoo:如果你是C#写的话,我可以轻松解决,无奈 我不懂java

查看完整回答
反对 回复 2018-12-16
?
大话西游666

TA贡献1817条经验 获得超14个赞

RecvMsg 与main 无任何关联。 还是加个标志吧  

查看完整回答
反对 回复 2018-12-16
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

 这里该怎么同步啊,求大神指教

查看完整回答
反对 回复 2018-12-16
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

搜一下java的future

查看完整回答
反对 回复 2018-12-16
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

public static void RecvMsg(){  checkRespMsg();  }  这样不行?

查看完整回答
反对 回复 2018-12-16
?
千巷猫影

TA贡献1829条经验 获得超7个赞

下一个发送的报文会用到前一个报文的应答,sendMsg()是for循环发送的,这样会出现发了两三个报文,才收到第一个报文的应答,而且后面发送的报文会出错

查看完整回答
反对 回复 2018-12-16
  • 9 回答
  • 0 关注
  • 553 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号