我在这里从 Apache 获取示例代码:https ://activemq.apache.org/components/cms/example
(特别是生产者部分)并尝试重写它,因此它不会创建任何用于生产的线程。相反,在我的程序的主线程中,创建一个生产者对象并设置连接、会话、目的地等。然后它使用消息生产者发送消息。这一切都是在一个单例中完成的,因此我的程序只有一个 Producer 对象,并且只要它需要将任何消息转储到我的队列之一就可以访问它。这个示例代码似乎为每个线程创建了一个生产者,每次都设置它,只是为了发送一条消息,然后删除所有内容。每次你想从你的程序中产生一些东西时,它都会这样做。
当我尝试使用任何给定消息对消息生产者调用 send 时,我正在崩溃。经过一番挖掘后,我发现在发送调用之后它会尝试锁定互斥锁并进入临界区。我想这是为了线程?我的代码中根本不使用线程,所以我猜它会因此而崩溃......有谁知道绕过这个的方法?我不想使用多个线程,我不需要担心两个线程试图同时调用 send 或者使用互斥锁试图解决的任何问题。