【问题标题】:How to hold a thread till MQTT message has arrived如何在 MQTT 消息到达之前保持线程
【发布时间】:2016-06-26 09:47:36
【问题描述】:

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

例如:

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 是两个不同的主题,以防万一

【问题讨论】:

    标签: java multithreading mqtt paho


    【解决方案1】:

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

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

    如果您对 old-skool 代码感到满意,共享保护对象和等待/通知机制就可以了。更现代的方法是使用 CyclicBarrier 之类的东西。

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

    【讨论】:

    • 因为我使用的是 eclipse 的 paho 库,所以我确实专门生成了一个新线程,而不是库。我希望我能够不使用单独的线程。谢谢你的回复,我去试试CyclicBarrier方式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2018-09-13
    • 1970-01-01
    • 2021-08-31
    相关资源
    最近更新 更多