程序設計大概是這樣的:我先發(fā)送報文,在接收到應答報文后,對應答報文進行檢測操作。
遇到的問題:如下,sendMsg()后,因為RecvMsg()是自動回調(diào)函數(shù),得等待RecvMsg()被調(diào)用收到應答報文后,才能checkRespMsg(),這中間需要鎖或者什么來同步一下,該怎么做?
public static void main(String[] args){
sendMsg();
//這里該寫什么
checkRespMsg();
}
?
public static void RecvMsg(){
//這里該寫什么
}
?
9 回答

慕村225694
TA貢獻1880條經(jīng)驗 獲得超4個贊
sendMsg()和RecvMsg()都是同步的嗎?是的話就不用加鎖吧;若不是同步的可以將返回報文放到隊列、集合中,取出報文進行校驗,個人愚見

侃侃爾雅
TA貢獻1801條經(jīng)驗 獲得超16個贊
不要把簡單的事情弄復雜,你應該這樣子寫,就可以輕松地解決你的問題了,不要亂加什么鎖。
public static void main(String[] args){ sendMsg(); } public static void RecvMsg(){ //收到數(shù)據(jù)后 //就檢查 收到的數(shù)據(jù)。 checkRespMsg(); }
?

精慕HU
TA貢獻1845條經(jīng)驗 獲得超8個贊
我之前也是這樣想的,但是checkRespMsg()需要參數(shù),RecvMsg()因為是其他人寫的jar包里的回調(diào)函數(shù),無法提供該參數(shù);不然就要用全局變量了。而我也想學習一下鎖和同步問題,就是這樣

千巷貓影
TA貢獻1829條經(jīng)驗 獲得超7個贊
下一個發(fā)送的報文會用到前一個報文的應答,sendMsg()是for循環(huán)發(fā)送的,這樣會出現(xiàn)發(fā)了兩三個報文,才收到第一個報文的應答,而且后面發(fā)送的報文會出錯
添加回答
舉報
0/150
提交
取消