如何确保在主线程的上下文中调用回调?
我正在使用 ActiveMQ,特别是,我试图了解如何确保在创建 activemq 使用者的线程的上下文中执行回调。
我在侦听器/处理程序中获得的线程 ID 与创建使用者和设置侦听器的线程 ID 不同,因此我试图了解如何确保处理程序/侦听器中的代码在第一个线程线程上运行。
如果我创建了在侦听器中运行代码的线程,我可能会使用 Executor 和 Future,但由于它是由 activemq 为我创建的,我希望弄清楚如何让侦听器在上下文中执行“主”线程。
然后我开始阅读一般的 java 线程回调,大多数文章都解释了调用一个类的方法,你传递给实现 runnable 的线程。在我看来,该回调中的任何代码仍将在我刚刚生成的线程的上下文中。
..那么如何确保在主线程的上下文中调用回调?
在 .net 中,我可以使用 SynchronizationContext 或在 WPF 中使用此上下文的调度程序。
我一直在查看同步方法,但看起来这些方法访问另一个线程中定义的数据变量,即“主”线程,在我的情况下,变量/数据是在消费者线程中创建的,我需要将它们传回/ 确保它们在“主”线程上可用。