猿问

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

程序设计大概是这样的:我先发送报文,在接收到应答报文后,对应答报文进行检测操作。

遇到的问题:如下,sendMsg()后,因为RecvMsg()是自动回调函数,得等待RecvMsg()被调用收到应答报文后,才能checkRespMsg(),这中间需要锁或者什么来同步一下,该怎么做?

public static void main(String[] args){
  sendMsg();
  //这里该写什么
  checkRespMsg();
}

 

public static void RecvMsg(){
  //这里该写什么
}

 

德玛西亚99
浏览 554回答 9
9回答

慕村225694

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

侃侃尔雅

不要把简单的事情弄复杂,你应该这样子写,就可以轻松地解决你的问题了,不要乱加什么锁。 public static void main(String[] args){   sendMsg(); } public static void RecvMsg(){ //收到数据后 //就检查 收到的数据。   checkRespMsg(); }  

精慕HU

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

忽然笑

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

大话西游666

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

哆啦的时光机

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

回首忆惘然

搜一下java的future

凤凰求蛊

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

千巷猫影

下一个发送的报文会用到前一个报文的应答,sendMsg()是for循环发送的,这样会出现发了两三个报文,才收到第一个报文的应答,而且后面发送的报文会出错
随时随地看视频慕课网APP

相关分类

Java
我要回答