JMS 接收器线程和 onMessage() 回调



我查看了类似的线程,但没有得到令人满意的答复。

在 JMS 接收器线程中,我看到一个编码如下的 while 循环:

while(true) { Thread.sleep(1000); }

上面的线程还附加了一个注册的侦听器,它实现了 messageListener 接口,从而提供了回调 onMessage(( 事件。

当 onMessage(( 事件在侦听器上触发时,接收线程会发生什么?

它的状态会变成假的吗?它是否会被中断(并引发中断的异常(?

在上面提到的 while 循环中究竟发生了什么?

上面的代码只是说"永远等待" - 它很可能是一种仓促设计的方式,在有人点击 Ctrl-C 之前不结束这个线程。while(true( 的代码将永远为真,所以它只是在这里阻塞,直到这个线程被中断。这个线程里面没有魔法!

但是,在 Connection.start(( 中自动创建的第二个(不可见的("消息调度程序线程"中,消息被接收并调度到您的 onMessage(( 方法。直到你调用 Connection.stop(( 或退出你的程序。

最新更新