如何保持线程直到MQTT消息到达

时间:2016-06-26 09:47:36

标签: java multithreading mqtt paho

在我的应用程序中通过Paho MQTT发送消息,我必须等待响应才能发送新消息。

e.g:

while (!exit){
  sendMessage(); //sends message via Paho MQTT 
  myMqttConnection.run() //starts a thread to wait for Response via Paho MQTT
  //what to do to hold this thread till a message has arrived?
}

sendMessage()和myMqttConnection是两个不同的主题,以防重要

1 个答案:

答案 0 :(得分:0)

鉴于您提供的信息有限,有几种方法可以解决这个问题。

如果你myMqttConnection.run()代码中产生一个线程,你需要一种方法让你的线程互相等待。

如果您对旧的skool代码感到满意,则可以使用共享保护对象和等待/通知机制。更现代的方法是使用像CyclicBarrier这样的东西。

否则,如果你在myMqttConnection.run()中产生一个线程,但是等待它完成,你必须质疑为什么要产生一个线程..?为什么不将run()重命名为read()并从read()消息中返回消息。